diff --git a/GUI/host/host.cc b/GUI/host/host.cc index fc89755..4f4c38b 100644 --- a/GUI/host/host.cc +++ b/GUI/host/host.cc @@ -25,7 +25,7 @@ namespace std::unordered_map textThreadsByParams; std::unordered_map processRecordsByIds; - WinMutex hostMutex; + std::recursive_mutex hostMutex; DWORD DUMMY[100]; ThreadParam CONSOLE{ 0, -1ULL, -1ULL, -1ULL }; diff --git a/GUI/host/textthread.h b/GUI/host/textthread.h index 0ee7ea5..c9974f3 100644 --- a/GUI/host/textthread.h +++ b/GUI/host/textthread.h @@ -28,7 +28,7 @@ private: std::vector buffer; std::wstring storage; - WinMutex ttMutex; + std::recursive_mutex ttMutex; HANDLE deletionEvent = CreateEventW(nullptr, FALSE, FALSE, NULL); std::thread flushThread = std::thread([&]() { while (WaitForSingleObject(deletionEvent, 100) == WAIT_TIMEOUT) Flush(); }); diff --git a/include/types.h b/include/types.h index efd8847..0755013 100644 --- a/include/types.h +++ b/include/types.h @@ -68,15 +68,4 @@ struct HookRemovedNotif // From hook unsigned __int64 address; }; -// Artikash 8/28/2018: similar to std::recursive_mutex but uses WinAPI for better performance -class WinMutex -{ - CRITICAL_SECTION cs; -public: - WinMutex() { InitializeCriticalSection(&cs); }; - ~WinMutex() { EnterCriticalSection(&cs); LeaveCriticalSection(&cs); DeleteCriticalSection(&cs); }; - void lock() { EnterCriticalSection(&cs); }; - void unlock() { LeaveCriticalSection(&cs); }; -}; - -typedef std::lock_guard LOCK; +typedef std::lock_guard LOCK;