]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/thread.cpp
don't declare inline function with dllexport declaration, this provokes mingw32 warni...
[wxWidgets.git] / src / msw / thread.cpp
index 74ab15f4c9baa034640261a938e3b78cc0709a92..36fc19ef8e22a7b6ff14196f8270dd5ab32bf21a 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: