]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/thread.cpp
don't just drop click events resulting from triple clicks
[wxWidgets.git] / src / msw / thread.cpp
index f949283aad90cc5e32f61788fe447cbe556d9680..e179d3683f46fbc1e85199991421a16f80a14278 100644 (file)
@@ -777,15 +777,24 @@ wxThreadInternal::WaitForTerminate(wxCriticalSection& cs,
     // although the thread might be already in the EXITED state it might not
     // have terminated yet and so we are not sure that it has actually
     // terminated if the "if" above hadn't been taken
-    do
+    for ( ;; )
     {
         if ( !::GetExitCodeThread(m_hThread, (LPDWORD)&rc) )
         {
             wxLogLastError(wxT("GetExitCodeThread"));
 
             rc = (wxThread::ExitCode)-1;
+
+            break;
         }
-    } while ( (DWORD)rc == STILL_ACTIVE );
+
+        if ( (DWORD)rc != STILL_ACTIVE )
+            break;
+
+        // give the other thread some time to terminate, otherwise we may be
+        // starving it
+        ::Sleep(1);
+    }
 
     if ( pRc )
         *pRc = rc;