]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/thread.cpp
Rework the wxCusor ctor taking wx stock number to provide as many cursors as
[wxWidgets.git] / src / msw / thread.cpp
index 74ab15f4c9baa034640261a938e3b78cc0709a92..6b835a97073906ab56c0a5220c3a8def05a8b407 100644 (file)
@@ -26,7 +26,6 @@
 #include "wx/thread.h"
 
 #ifndef WX_PRECOMP
 #include "wx/thread.h"
 
 #ifndef WX_PRECOMP
-    #include "wx/msw/missing.h"
     #include "wx/intl.h"
     #include "wx/app.h"
     #include "wx/module.h"
     #include "wx/intl.h"
     #include "wx/app.h"
     #include "wx/module.h"
@@ -36,6 +35,7 @@
 #include "wx/scopeguard.h"
 
 #include "wx/msw/private.h"
 #include "wx/scopeguard.h"
 
 #include "wx/msw/private.h"
+#include "wx/msw/missing.h"
 #include "wx/msw/seh.h"
 
 #include "wx/except.h"
 #include "wx/msw/seh.h"
 
 #include "wx/except.h"
@@ -178,7 +178,8 @@ public:
     bool IsOk() const { return m_mutex != NULL; }
 
     wxMutexError Lock() { return LockTimeout(INFINITE); }
     bool IsOk() const { return m_mutex != NULL; }
 
     wxMutexError Lock() { return LockTimeout(INFINITE); }
-    wxMutexError TryLock() { return LockTimeout(0); }
+    wxMutexError Lock(unsigned long ms) { return LockTimeout(ms); }
+    wxMutexError TryLock();
     wxMutexError Unlock();
 
 private:
     wxMutexError Unlock();
 
 private:
@@ -196,7 +197,7 @@ wxMutexInternal::wxMutexInternal(wxMutexType WXUNUSED(mutexType))
     m_mutex = ::CreateMutex
                 (
                     NULL,       // default secutiry attributes
     m_mutex = ::CreateMutex
                 (
                     NULL,       // default secutiry attributes
-                    false,      // not initially locked
+                    FALSE,      // not initially locked
                     NULL        // no name
                 );
 
                     NULL        // no name
                 );
 
@@ -217,6 +218,14 @@ wxMutexInternal::~wxMutexInternal()
     }
 }
 
     }
 }
 
+wxMutexError wxMutexInternal::TryLock()
+{
+    const wxMutexError rc = LockTimeout(0);
+
+    // we have a special return code for timeout in this case
+    return rc == wxMUTEX_TIMEOUT ? wxMUTEX_BUSY : rc;
+}
+
 wxMutexError wxMutexInternal::LockTimeout(DWORD milliseconds)
 {
     DWORD rc = ::WaitForSingleObject(m_mutex, milliseconds);
 wxMutexError wxMutexInternal::LockTimeout(DWORD milliseconds)
 {
     DWORD rc = ::WaitForSingleObject(m_mutex, milliseconds);
@@ -237,7 +246,7 @@ wxMutexError wxMutexInternal::LockTimeout(DWORD milliseconds)
             break;
 
         case WAIT_TIMEOUT:
             break;
 
         case WAIT_TIMEOUT:
-            return wxMUTEX_BUSY;
+            return wxMUTEX_TIMEOUT;
 
         case WAIT_ABANDONED:        // checked for above
         default:
 
         case WAIT_ABANDONED:        // checked for above
         default:
@@ -987,7 +996,7 @@ bool wxThread::SetConcurrency(size_t WXUNUSED_IN_WINCE(level))
     // set it: we can't link to SetProcessAffinityMask() because it doesn't
     // exist in Win9x, use RT binding instead
 
     // set it: we can't link to SetProcessAffinityMask() because it doesn't
     // exist in Win9x, use RT binding instead
 
-    typedef BOOL (*SETPROCESSAFFINITYMASK)(HANDLE, DWORD);
+    typedef BOOL (WINAPI *SETPROCESSAFFINITYMASK)(HANDLE, DWORD_PTR);
 
     // can use static var because we're always in the main thread here
     static SETPROCESSAFFINITYMASK pfnSetProcessAffinityMask = NULL;
 
     // can use static var because we're always in the main thread here
     static SETPROCESSAFFINITYMASK pfnSetProcessAffinityMask = NULL;