X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b11af9ed9d759a86275a4d28d59ba17b7f2c8d69..373a4816d447cbf6da448e139cd577599c866e86:/src/dfb/app.cpp diff --git a/src/dfb/app.cpp b/src/dfb/app.cpp index c78010f081..0cc0506b3f 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" @@ -28,10 +29,6 @@ IMPLEMENT_DYNAMIC_CLASS(wxApp, wxEvtHandler) -BEGIN_EVENT_TABLE(wxApp, wxEvtHandler) - EVT_IDLE(wxAppBase::OnIdle) -END_EVENT_TABLE() - wxApp::wxApp() { } @@ -151,57 +148,9 @@ bool wxApp::SetDisplayMode(const wxVideoMode& mode) void wxApp::WakeUpIdle() { -#if wxUSE_THREADS - if (!wxThread::IsMain()) - wxMutexGuiEnter(); -#endif - - wxEventLoop * const loop = wxEventLoop::GetActive(); + // we don't need a mutex here, since we use the wxConsoleEventLoop + // and wxConsoleEventLoop::WakeUp() is thread-safe + wxEventLoopBase * const loop = wxEventLoop::GetActive(); if ( loop ) loop->WakeUp(); - -#if wxUSE_THREADS - if (!wxThread::IsMain()) - wxMutexGuiLeave(); -#endif -} - - -bool wxApp::Yield(bool onlyIfNeeded) -{ -#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 ( !onlyIfNeeded ) - { - wxFAIL_MSG( wxT("wxYield called recursively" ) ); - } - - return false; - } - - s_inYield = true; - - wxLog::Suspend(); - - wxEventLoop * const loop = wxEventLoop::GetActive(); - if ( loop ) - loop->Yield(); - - // it's necessary to call ProcessIdle() to update the frames sizes which - // might have been changed (it also will update other things set from - // OnUpdateUI() which is a nice (and desired) side effect) - while ( ProcessIdle() ) {} - - wxLog::Resume(); - - s_inYield = false; - - return true; }