X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/223d09f6b523aac674ef9b72a883dfa8d37c5d4e..acb8423c2b0b55b75e2551d67815bed345f684cd:/src/gtk1/app.cpp diff --git a/src/gtk1/app.cpp b/src/gtk1/app.cpp index d262df2ecb..26a9ea36e6 100644 --- a/src/gtk1/app.cpp +++ b/src/gtk1/app.cpp @@ -8,7 +8,6 @@ ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ - #pragma implementation "appbase.h" #pragma implementation "app.h" #endif @@ -33,11 +32,11 @@ #include "wx/thread.h" #endif -#include "unistd.h" +#include -#include "glib.h" -#include "gdk/gdk.h" -#include "gtk/gtk.h" +#include +#include +#include #include "wx/gtk/win_gtk.h" @@ -48,10 +47,6 @@ wxApp *wxTheApp = (wxApp *) NULL; wxAppInitializerFunction wxAppBase::m_appInitFn = (wxAppInitializerFunction) NULL; -#if wxUSE_THREADS -extern wxList *wxPendingEvents; -extern wxCriticalSection *wxPendingEventsLocker; -#endif extern wxResourceCache *wxTheResourceCache; extern bool g_isIdle; @@ -127,10 +122,18 @@ unsigned char g_palette[64*3] = // local functions //----------------------------------------------------------------------------- -extern void wxFlushResources(void); +extern void wxFlushResources(); + +/* forward declaration */ +gint wxapp_idle_callback( gpointer WXUNUSED(data) ); +void wxapp_install_idle_handler(); + +#if wxUSE_THREADS +gint wxapp_wakeup_timerout_callback( gpointer WXUNUSED(data) ); +#endif //----------------------------------------------------------------------------- -// global functions +// wxExit //----------------------------------------------------------------------------- void wxExit() @@ -138,8 +141,9 @@ void wxExit() gtk_main_quit(); } -/* forward declaration */ -gint wxapp_idle_callback( gpointer WXUNUSED(data) ); +//----------------------------------------------------------------------------- +// wxYield +//----------------------------------------------------------------------------- bool wxYield() { @@ -170,6 +174,20 @@ bool wxYield() return TRUE; } +//----------------------------------------------------------------------------- +// wxWakeUpIdle +//----------------------------------------------------------------------------- + +void wxWakeUpIdle() +{ + if (g_isIdle) + wxapp_install_idle_handler(); +} + +//----------------------------------------------------------------------------- +// local functions +//----------------------------------------------------------------------------- + gint wxapp_idle_callback( gpointer WXUNUSED(data) ) { if (!wxTheApp) return TRUE; @@ -218,9 +236,6 @@ void wxapp_install_idle_handler() #if wxUSE_THREADS -/* forward declaration */ -static gint wxapp_wakeup_timerout_callback( gpointer WXUNUSED(data) ); - void wxapp_install_thread_wakeup() { if (wxTheApp->m_wakeUpTimerTag) return; @@ -236,7 +251,7 @@ void wxapp_uninstall_thread_wakeup() wxTheApp->m_wakeUpTimerTag = 0; } -static gint wxapp_wakeup_timerout_callback( gpointer WXUNUSED(data) ) +gint wxapp_wakeup_timerout_callback( gpointer WXUNUSED(data) ) { wxapp_uninstall_thread_wakeup(); @@ -265,7 +280,8 @@ static gint wxapp_wakeup_timerout_callback( gpointer WXUNUSED(data) ) return TRUE; } -#endif + +#endif // wxUSE_THREADS //----------------------------------------------------------------------------- // wxApp @@ -427,11 +443,9 @@ void wxApp::OnIdle( wxIdleEvent &event ) s_inOnIdle = TRUE; -#if wxUSE_THREADS /* Resend in the main thread events which have been prepared in other threads */ ProcessPendingEvents(); -#endif /* 'Garbage' collection of windows deleted with Close(). */ DeletePendingObjects(); @@ -520,25 +534,6 @@ void wxApp::Dispatch() gtk_main_iteration(); } -#if wxUSE_THREADS -void wxApp::ProcessPendingEvents() -{ - wxNode *node = wxPendingEvents->First(); - wxCriticalSectionLocker locker(*wxPendingEventsLocker); - - while (node) - { - wxEvtHandler *handler = (wxEvtHandler *)node->Data(); - - handler->ProcessPendingEvents(); - - delete node; - - node = wxPendingEvents->First(); - } -} -#endif // wxUSE_THREADS - void wxApp::DeletePendingObjects() { wxNode *node = wxPendingDelete.First(); @@ -653,9 +648,8 @@ void wxApp::CleanUp() wxLog *oldLog = wxLog::SetActiveTarget( (wxLog*) NULL ); if (oldLog) delete oldLog; -} - #endif // wxUSE_LOG +} //----------------------------------------------------------------------------- // wxEntry