]> git.saurik.com Git - wxWidgets.git/commitdiff
corrected Sleep implementation (as clock() under Mach does only return our own passed...
authorStefan Csomor <csomor@advancedconcepts.ch>
Sun, 8 Feb 2004 12:38:11 +0000 (12:38 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Sun, 8 Feb 2004 12:38:11 +0000 (12:38 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25617 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/mac/carbon/thread.cpp
src/mac/thread.cpp

index 3634a69ddec7e9aa49ce2efc0d8992e072602df7..ef01ae9b20db1bd8a1c252b3c0d6346dff79ee77 100644 (file)
@@ -38,6 +38,7 @@
 #include <Threads.h>
 #include "wx/mac/uma.h"
 #include "wx/mac/macnotfy.h"
+#include "Timer.h"
 #endif
 
 #define INFINITE 0xFFFFFFFF
@@ -528,11 +529,20 @@ void wxThread::Yield()
 
 void wxThread::Sleep(unsigned long milliseconds)
 {
-    clock_t start = clock();
+    UnsignedWide start, now;
+
+    Microseconds(&start);
+
+    double mssleep = milliseconds * 1000 ;
+    double msstart, msnow ;
+    msstart = (start.hi * 4294967296.0 + start.lo) ;
+    
     do
     {
         YieldToAnyThread();
-    } while( clock() - start < milliseconds * CLOCKS_PER_SEC /  1000.0 ) ;
+        Microseconds(&now);
+        msnow = (now.hi * 4294967296.0 + now.lo) ;
+    } while( msstart - msnow < mssleep );
 }
 
 int wxThread::GetCPUCount()
index 3634a69ddec7e9aa49ce2efc0d8992e072602df7..ef01ae9b20db1bd8a1c252b3c0d6346dff79ee77 100644 (file)
@@ -38,6 +38,7 @@
 #include <Threads.h>
 #include "wx/mac/uma.h"
 #include "wx/mac/macnotfy.h"
+#include "Timer.h"
 #endif
 
 #define INFINITE 0xFFFFFFFF
@@ -528,11 +529,20 @@ void wxThread::Yield()
 
 void wxThread::Sleep(unsigned long milliseconds)
 {
-    clock_t start = clock();
+    UnsignedWide start, now;
+
+    Microseconds(&start);
+
+    double mssleep = milliseconds * 1000 ;
+    double msstart, msnow ;
+    msstart = (start.hi * 4294967296.0 + start.lo) ;
+    
     do
     {
         YieldToAnyThread();
-    } while( clock() - start < milliseconds * CLOCKS_PER_SEC /  1000.0 ) ;
+        Microseconds(&now);
+        msnow = (now.hi * 4294967296.0 + now.lo) ;
+    } while( msstart - msnow < mssleep );
 }
 
 int wxThread::GetCPUCount()