X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0728199b911be9095406cf05059a5a180e707778..1afe8c83072c52d957db8a9877ca28011258ecac:/src/dfb/app.cpp?ds=inline diff --git a/src/dfb/app.cpp b/src/dfb/app.cpp index 8ae8339fe5..141bd1a031 100644 --- a/src/dfb/app.cpp +++ b/src/dfb/app.cpp @@ -19,6 +19,7 @@ #include "wx/app.h" #include "wx/evtloop.h" +#include "wx/thread.h" #include "wx/dfb/private.h" #include "wx/private/fontmgr.h" @@ -162,17 +163,14 @@ void wxApp::WakeUpIdle() #endif } - -bool wxApp::Yield(bool onlyIfNeeded) +bool wxApp::DoYield(bool onlyIfNeeded, long eventsToProcess) { #if wxUSE_THREADS if ( !wxThread::IsMain() ) return true; // can't process events from other threads #endif // wxUSE_THREADS - static bool s_inYield = false; - - if ( s_inYield ) + if ( m_isInsideYield ) { if ( !onlyIfNeeded ) { @@ -182,12 +180,15 @@ bool wxApp::Yield(bool onlyIfNeeded) return false; } - s_inYield = true; + m_isInsideYield = true; + m_eventsToProcessInsideYield = eventsToProcess; +#if wxUSE_LOG wxLog::Suspend(); +#endif // wxUSE_LOG wxEventLoop * const - loop = wx_static_cast(wxEventLoop *, wxEventLoop::GetActive()); + loop = static_cast(wxEventLoop::GetActive()); if ( loop ) loop->Yield(); @@ -196,9 +197,11 @@ bool wxApp::Yield(bool onlyIfNeeded) // OnUpdateUI() which is a nice (and desired) side effect) while ( ProcessIdle() ) {} +#if wxUSE_LOG wxLog::Resume(); +#endif // wxUSE_LOG - s_inYield = false; + m_isInsideYield = false; return true; }