-//-----------------------------------------------------------------------------
-// wxYield
-//-----------------------------------------------------------------------------
-
-// not static because used by textctrl.cpp
-//
-// MT-FIXME
-bool wxIsInsideYield = false;
-
-bool wxApp::Yield(bool onlyIfNeeded)
-{
- if ( wxIsInsideYield )
- {
- if ( !onlyIfNeeded )
- {
- wxFAIL_MSG( wxT("wxYield called recursively" ) );
- }
-
- return false;
- }
-
-#if wxUSE_THREADS
- if ( !wxThread::IsMain() )
- {
- // can't call gtk_main_iteration() from other threads like this
- return true;
- }
-#endif // wxUSE_THREADS
-
- wxIsInsideYield = true;
-
- // We need to remove idle callbacks or the loop will
- // never finish.
- RemoveIdleSource();
-
-#if wxUSE_LOG
- // disable log flushing from here because a call to wxYield() shouldn't
- // normally result in message boxes popping up &c
- wxLog::Suspend();
-#endif
-
- while (gtk_events_pending())
- gtk_main_iteration();
-
- // 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). But we
- // call ProcessIdle() only once since this is not meant for longish
- // background jobs (controlled by wxIdleEvent::RequestMore() and the
- // return value of Processidle().
- ProcessIdle();
-
-#if wxUSE_LOG
- // let the logs be flashed again
- wxLog::Resume();
-#endif
-
- wxIsInsideYield = false;
-
- return true;
-}
-
-//-----------------------------------------------------------------------------
-// wxWakeUpIdle
-//-----------------------------------------------------------------------------
-
-// RR/KH: No wxMutexGui calls are needed here according to the GTK faq,
-// http://www.gtk.org/faq/#AEN500 - this caused problems for wxPostEvent.
-
-void wxApp::WakeUpIdle()
-{
- wxapp_install_idle_handler();
-}
-