]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/thread.cpp
Added UpdateSize to wxSplitterWindow, to allow an app
[wxWidgets.git] / src / msw / thread.cpp
index f949283aad90cc5e32f61788fe447cbe556d9680..469ced786b44ebabbe4ea8866e854061e55e4e0c 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;
@@ -893,7 +902,7 @@ bool wxThread::SetConcurrency(size_t level)
 
     // get system affinity mask first
     HANDLE hProcess = ::GetCurrentProcess();
-    DWORD dwProcMask, dwSysMask;
+    DWORD_PTR dwProcMask, dwSysMask;
     if ( ::GetProcessAffinityMask(hProcess, &dwProcMask, &dwSysMask) == 0 )
     {
         wxLogLastError(_T("GetProcessAffinityMask"));
@@ -974,7 +983,8 @@ bool wxThread::SetConcurrency(size_t level)
 
         return false;
     }
-#endif
+#endif // !__WXWINCE__
+
     return true;
 }