aboutsummaryrefslogtreecommitdiff
path: root/libs/usvfs/src/usvfs_dll/semaphore.cpp
diff options
context:
space:
mode:
authorSulfurNitride <SulfurNitride@users.noreply.github.com>2026-04-12 02:40:16 -0500
committerSulfurNitride <SulfurNitride@users.noreply.github.com>2026-04-12 02:40:16 -0500
commitbf7a57fc55493247a624ecfd65e4d73964e7d8d2 (patch)
tree0a4b2d6123672768187a5ab863e63cd3f21bb319 /libs/usvfs/src/usvfs_dll/semaphore.cpp
parente0fb66428a9b78b4c326df8d7e30429a5b271d74 (diff)
Remove vendored usvfs and Windows-only usvfs code paths
The Linux port uses its own in-process FUSE VFS (FuseConnector), so usvfs was dead weight: libs/usvfs/ was never built, usvfsconnector.cpp was explicitly REMOVE_ITEM'd from the source list, and every call site was already guarded by #ifdef _WIN32 with a working Linux branch (the Windows build is also broken on this branch, since FUSE3 is a hard find_package dependency). - Drop libs/usvfs/ and src/src/usvfsconnector.{cpp,h} - Collapse #ifdef _WIN32 / usvfs include branches in organizercore, mainwindow, settings, util, spawn - Remove getUsvfsVersionString() and the "usvfs: ..." log field - Remove vfs32/64DLLName APPPARAMs (nothing reads them) - Relabel About dialog "usvfs:" row to "VFS: FUSE 3"
Diffstat (limited to 'libs/usvfs/src/usvfs_dll/semaphore.cpp')
-rw-r--r--libs/usvfs/src/usvfs_dll/semaphore.cpp57
1 files changed, 0 insertions, 57 deletions
diff --git a/libs/usvfs/src/usvfs_dll/semaphore.cpp b/libs/usvfs/src/usvfs_dll/semaphore.cpp
deleted file mode 100644
index 609b2f5..0000000
--- a/libs/usvfs/src/usvfs_dll/semaphore.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-#include "semaphore.h"
-#include "exceptionex.h"
-
-RecursiveBenaphore::RecursiveBenaphore() : m_Counter(0), m_OwnerId(0UL), m_Recursion(0)
-{
- m_Semaphore = ::CreateSemaphore(nullptr, 1, 1, nullptr);
-}
-
-RecursiveBenaphore::~RecursiveBenaphore()
-{
- ::CloseHandle(m_Semaphore);
-}
-
-void RecursiveBenaphore::wait(DWORD timeout)
-{
- DWORD tid = ::GetCurrentThreadId();
-
- if (::_InterlockedIncrement(&m_Counter) > 1) {
- if (tid != m_OwnerId) {
- int tries = 3;
- while (::WaitForSingleObject(m_Semaphore, timeout) != WAIT_OBJECT_0) {
- HANDLE owner = ::OpenThread(SYNCHRONIZE, FALSE, m_OwnerId);
- ON_BLOCK_EXIT([owner]() {
- ::CloseHandle(owner);
- });
- if ((tries <= 0) || (::WaitForSingleObject(owner, 0) == WAIT_OBJECT_0)) {
- // owner has quit without releasing the semaphore!
- m_Recursion = 0;
- spdlog::get("usvfs")->error("thread {} never released the mutex", m_OwnerId);
- break;
- } else {
- --tries;
- }
- }
- }
- }
- m_OwnerId = tid;
- ++m_Recursion;
-}
-
-void RecursiveBenaphore::signal()
-{
- if (m_Recursion == 0) {
- return;
- }
- // no validation the signaling thread is the one owning the lock
- DWORD recursion = --m_Recursion;
- if (recursion == 0) {
- m_OwnerId = 0;
- }
- DWORD result = ::_InterlockedDecrement(&m_Counter);
- if (result > 0) {
- if (recursion == 0) {
- ::ReleaseSemaphore(m_Semaphore, 1, nullptr);
- }
- }
-}