X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d3b9f782ef3949f583e8ac53795d36787f044fc3..3aaaf1aaa0dfe514bd778bc11dfa96854952c246:/src/gtk/app.cpp diff --git a/src/gtk/app.cpp b/src/gtk/app.cpp index e982ec4ab0..c349227bce 100644 --- a/src/gtk/app.cpp +++ b/src/gtk/app.cpp @@ -44,65 +44,6 @@ wxFORCE_LINK_MODULE(gnome_vfs) #endif -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -static GtkWidget *gs_RootWindow = NULL; - -//----------------------------------------------------------------------------- -// wxYield -//----------------------------------------------------------------------------- - -bool wxApp::Yield(bool onlyIfNeeded) -{ - if ( m_isInsideYield ) - { - 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 - - m_isInsideYield = true; - -#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 (EventsPending()) - 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 - - m_isInsideYield = false; - - return true; -} - //----------------------------------------------------------------------------- // local functions //----------------------------------------------------------------------------- @@ -174,7 +115,8 @@ bool wxApp::DoIdle() id_save = m_idleSourceId; m_idleSourceId = 0; wx_add_idle_hooks(); -#ifdef __WXDEBUG__ + +#if wxDEBUG_LEVEL // don't generate the idle events while the assert modal dialog is shown, // this matches the behavior of wxMSW if (m_isInAssert) @@ -222,12 +164,14 @@ bool wxApp::DoIdle() GtkWidget* wxGetRootWindow() { - if (gs_RootWindow == NULL) + static GtkWidget *s_RootWindow = NULL; + + if (s_RootWindow == NULL) { - gs_RootWindow = gtk_window_new( GTK_WINDOW_TOPLEVEL ); - gtk_widget_realize( gs_RootWindow ); + s_RootWindow = gtk_window_new( GTK_WINDOW_TOPLEVEL ); + gtk_widget_realize( s_RootWindow ); } - return gs_RootWindow; + return s_RootWindow; } //----------------------------------------------------------------------------- @@ -238,9 +182,8 @@ IMPLEMENT_DYNAMIC_CLASS(wxApp,wxEvtHandler) wxApp::wxApp() { -#ifdef __WXDEBUG__ m_isInAssert = false; -#endif // __WXDEBUG__ + #if wxUSE_THREADS m_idleMutex = NULL; #endif @@ -555,25 +498,30 @@ bool wxApp::EventsPending() return gtk_events_pending() != 0; } -#ifdef __WXDEBUG__ - void wxApp::OnAssertFailure(const wxChar *file, int line, const wxChar* func, const wxChar* cond, const wxChar *msg) { - + // there is no need to do anything if asserts are disabled in this build + // anyhow +#if wxDEBUG_LEVEL // block wx idle events while assert dialog is showing m_isInAssert = true; wxAppBase::OnAssertFailure(file, line, func, cond, msg); m_isInAssert = false; +#else // !wxDEBUG_LEVEL + wxUnusedVar(file); + wxUnusedVar(line); + wxUnusedVar(func); + wxUnusedVar(cond); + wxUnusedVar(msg); +#endif // wxDEBUG_LEVEL/!wxDEBUG_LEVEL } -#endif // __WXDEBUG__ - #if wxUSE_THREADS void wxGUIAppTraits::MutexGuiEnter() {