From 3dbc3b4e31f077f29fa8d1b59ca52d42057546ea Mon Sep 17 00:00:00 2001 From: cxl Date: Mon, 23 Apr 2018 16:02:09 +0000 Subject: [PATCH] CtrlCore: TryEnterGuiMutex git-svn-id: svn://ultimatepp.org/upp/trunk@11908 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/CtrlCore/CtrlCore.h | 2 ++ uppsrc/CtrlCore/CtrlMt.cpp | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/uppsrc/CtrlCore/CtrlCore.h b/uppsrc/CtrlCore/CtrlCore.h index f3467c1dd..050eec490 100644 --- a/uppsrc/CtrlCore/CtrlCore.h +++ b/uppsrc/CtrlCore/CtrlCore.h @@ -42,6 +42,7 @@ INITIALIZE(CtrlCore) #ifdef _MULTITHREADED void EnterGuiMutex(); +bool TryEnterGuiMutex(); void LeaveGuiMutex(); int LeaveGuiMutexAll(); @@ -51,6 +52,7 @@ bool ThreadHasGuiLock(); #else inline void EnterGuiMutex() {} inline void LeaveGuiMutex() {} +inline bool TryEnterGuiMutex() { return true; } inline int LeaveGuiMutexAll() { return 0; } inline void EnterGuiMutex(int) {} diff --git a/uppsrc/CtrlCore/CtrlMt.cpp b/uppsrc/CtrlCore/CtrlMt.cpp index ae18975fa..fcd18675e 100644 --- a/uppsrc/CtrlCore/CtrlMt.cpp +++ b/uppsrc/CtrlCore/CtrlMt.cpp @@ -29,6 +29,15 @@ void EnterGuiMutex(int n) LLOG("EnterGuiMutex " << sGLockLevel << ' ' << IsMainThread()); } +bool TryEnterGuiMutex() +{ + if(sGLockLevel == 0 && sGLock.TryEnter()) { + sGLockLevel++; + return true; + } + return false; +} + void LeaveGuiMutex() { LLOG(">LeaveGuiMutex " << sGLockLevel << ' ' << IsMainThread());