diff options
| author | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-04-12 02:40:16 -0500 |
|---|---|---|
| committer | SulfurNitride <SulfurNitride@users.noreply.github.com> | 2026-04-12 02:40:16 -0500 |
| commit | bf7a57fc55493247a624ecfd65e4d73964e7d8d2 (patch) | |
| tree | 0a4b2d6123672768187a5ab863e63cd3f21bb319 /libs/usvfs/src/usvfs_dll/semaphore.cpp | |
| parent | e0fb66428a9b78b4c326df8d7e30429a5b271d74 (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.cpp | 57 |
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); - } - } -} |
