]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/app.cpp
Allow wxThread::Wait() and Delete() to block, even under wxMSW.
[wxWidgets.git] / src / msw / app.cpp
index c69c55ffa4e19c829944cb23b099fa3e3c191a34..324dd87457c9d087802a6bdb3048286777660552 100644 (file)
@@ -233,15 +233,20 @@ bool wxGUIAppTraits::DoMessageFromThreadWait()
     return evtLoop->Dispatch();
 }
 
-DWORD wxGUIAppTraits::WaitForThread(WXHANDLE hThread)
+DWORD wxGUIAppTraits::WaitForThread(WXHANDLE hThread, int flags)
 {
     // We only ever dispatch messages from the main thread and, additionally,
     // even from the main thread we shouldn't wait for the message if we don't
     // have a running event loop as we would never remove them from the message
     // queue then and so we would enter an infinite loop as
     // MsgWaitForMultipleObjects() keeps returning WAIT_OBJECT_0 + 1.
-    if ( !wxIsMainThread() || !wxEventLoop::GetActive() )
+    if ( flags == wxTHREAD_WAIT_BLOCK ||
+            !wxIsMainThread() ||
+                !wxEventLoop::GetActive() )
+    {
+        // Simple blocking wait.
         return DoSimpleWaitForThread(hThread);
+    }
 
     return ::MsgWaitForMultipleObjects
              (