X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b46b1d59d6f69ad80dcf5955375578a6504d100a..00414faf347879152e3a2eb9a3603042631f260b:/src/common/evtloopcmn.cpp diff --git a/src/common/evtloopcmn.cpp b/src/common/evtloopcmn.cpp index ccbbb71126..997718b44a 100644 --- a/src/common/evtloopcmn.cpp +++ b/src/common/evtloopcmn.cpp @@ -34,10 +34,10 @@ // globals // ---------------------------------------------------------------------------- -wxEventLoop *wxEventLoopBase::ms_activeLoop = NULL; +wxEventLoopBase *wxEventLoopBase::ms_activeLoop = NULL; // wxEventLoopManual is unused in the other ports -#if defined(__WXMSW__) || defined(__WXMAC__) || defined(__WXDFB__) || (defined(__UNIX__) && !wxUSE_GUI) +#if defined(__WXMSW__) || defined(__WXMAC__) || defined(__WXDFB__) || (defined(__UNIX__) && wxUSE_BASE) // ============================================================================ // wxEventLoopManual implementation @@ -153,3 +153,23 @@ void wxEventLoopManual::Exit(int rc) } #endif // __WXMSW__ || __WXMAC__ || __WXDFB__ + +#ifdef wxNEEDS_GENERIC_DISPATCH_TIMEOUT + +int wxGUIEventLoop::DispatchTimeout(unsigned long timeout) +{ + // TODO: this is, of course, horribly inefficient and a proper wait with + // timeout should be implemented for all ports natively... + const wxMilliClock_t timeEnd = wxGetLocalTimeMillis() + timeout; + for ( ;; ) + { + if ( Pending() ) + return Dispatch(); + + if ( wxGetLocalTimeMillis() >= timeEnd ) + return -1; + } +} + +#endif // wxNEEDS_GENERIC_DISPATCH_TIMEOUT +