From: Stefan Csomor Date: Sun, 8 Feb 2004 12:38:11 +0000 (+0000) Subject: corrected Sleep implementation (as clock() under Mach does only return our own passed... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/1a527fbc0a04e474a0fdafe989db43f1eb2b7710?hp=4dc8d4b7c20b87855c0c11efcb3894be5d4bf2b2 corrected Sleep implementation (as clock() under Mach does only return our own passed time) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25617 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/mac/carbon/thread.cpp b/src/mac/carbon/thread.cpp index 3634a69dde..ef01ae9b20 100644 --- a/src/mac/carbon/thread.cpp +++ b/src/mac/carbon/thread.cpp @@ -38,6 +38,7 @@ #include #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() diff --git a/src/mac/thread.cpp b/src/mac/thread.cpp index 3634a69dde..ef01ae9b20 100644 --- a/src/mac/thread.cpp +++ b/src/mac/thread.cpp @@ -38,6 +38,7 @@ #include #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()