#include "wx/app.h"
#include "wx/evtloop.h"
+#include "wx/thread.h"
#include "wx/dfb/private.h"
#include "wx/private/fontmgr.h"
#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 )
{
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 *>(wxEventLoop::GetActive());
if ( loop )
loop->Yield();
// 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;
}