]> git.saurik.com Git - wxWidgets.git/commitdiff
Added forgotten(?) wxMutexGuiEnter.
authorStefan Neis <Stefan.Neis@t-online.de>
Sat, 9 Aug 2003 17:08:01 +0000 (17:08 +0000)
committerStefan Neis <Stefan.Neis@t-online.de>
Sat, 9 Aug 2003 17:08:01 +0000 (17:08 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22724 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/os2/thread.cpp

index 884f66cff4ed4f2e399c68560083655f34e61929..04ee638e57bf42b272ee7360aa6804c74b128d2c 100644 (file)
@@ -823,6 +823,28 @@ void WXDLLEXPORT wxWakeUpMainThread()
 {
 }
 
+void WXDLLEXPORT wxMutexGuiEnter()
+{
+    // this would dead lock everything...
+    wxASSERT_MSG( !wxThread::IsMain(),
+                  wxT("main thread doesn't want to block in wxMutexGuiEnter()!") );
+
+    // the order in which we enter the critical sections here is crucial!!
+
+    // set the flag telling to the main thread that we want to do some GUI
+    {
+        wxCriticalSectionLocker enter(*gs_pCritsectWaitingForGui);
+
+        gs_nWaitingForGui++;
+    }
+
+    wxWakeUpMainThread();
+
+    // now we may block here because the main thread will soon let us in
+    // (during the next iteration of OnIdle())
+    gs_pCritsectGui->Enter();
+}
+
 void WXDLLEXPORT wxMutexGuiLeave()
 {
     wxCriticalSectionLocker enter(*gs_pCritsectWaitingForGui);