X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/68567a967bc8afd37a40cb9a7ee5021b9ee6cd96..3af9f2de592953bec39a58cc871678fa85a3b056:/src/gtk/app.cpp diff --git a/src/gtk/app.cpp b/src/gtk/app.cpp index 862bf4da14..286164ca96 100644 --- a/src/gtk/app.cpp +++ b/src/gtk/app.cpp @@ -74,9 +74,19 @@ #include "wx/unix/private.h" #include "wx/gtk/win_gtk.h" +#include "wx/gtk/private.h" #include +//----------------------------------------------------------------------------- +// link GnomeVFS +//----------------------------------------------------------------------------- + +#if wxUSE_LIBGNOMEVFS +#include "wx/html/forcelnk.h" +FORCE_LINK(gnome_vfs) +#endif + //----------------------------------------------------------------------------- // global data //----------------------------------------------------------------------------- @@ -90,8 +100,6 @@ static GtkWidget *gs_RootWindow = (GtkWidget*) NULL; // idle system //----------------------------------------------------------------------------- -extern bool g_isIdle; - void wxapp_install_idle_handler(); #if wxUSE_THREADS @@ -249,17 +257,18 @@ static gint wxapp_idle_callback( gpointer WXUNUSED(data) ) wxTheApp->m_idleTag = 0; } + bool moreIdles; + // Send idle event to all who request them as long as // no events have popped up in the event queue. - while (wxTheApp->ProcessIdle() && (gtk_events_pending() == 0)) + while ( (moreIdles = wxTheApp->ProcessIdle()) && gtk_events_pending() == 0) ; // Release lock again gdk_threads_leave(); - // Return FALSE to indicate that no more idle events are - // to be sent (single shot instead of continuous stream). - return FALSE; + // Return FALSE if no more idle events are to be sent + return moreIdles; } #if wxUSE_THREADS @@ -374,14 +383,14 @@ void wxapp_install_idle_handler() g_isIdle = FALSE; if (g_pendingTag == 0) - g_pendingTag = gtk_idle_add_priority( 900, wxapp_pending_callback, (gpointer) NULL ); + g_pendingTag = g_idle_add_full( 900, wxapp_pending_callback, NULL, NULL ); // This routine gets called by all event handlers // indicating that the idle is over. It may also // get called from other thread for sending events // to the main thread (and processing these in // idle time). Very low priority. - wxTheApp->m_idleTag = gtk_idle_add_priority( 1000, wxapp_idle_callback, (gpointer) NULL ); + wxTheApp->m_idleTag = g_idle_add_full( 1000, wxapp_idle_callback, NULL, NULL ); } //----------------------------------------------------------------------------- @@ -419,7 +428,7 @@ wxApp::wxApp() wxapp_install_idle_handler(); #if wxUSE_THREADS - g_main_set_poll_func( wxapp_poll_func ); + g_main_context_set_poll_func( NULL, wxapp_poll_func ); #endif m_colorCube = (unsigned char*) NULL; @@ -431,9 +440,11 @@ wxApp::wxApp() wxApp::~wxApp() { - if (m_idleTag) gtk_idle_remove( m_idleTag ); + if (m_idleTag) + g_source_remove( m_idleTag ); - if (m_colorCube) free(m_colorCube); + if (m_colorCube) + free(m_colorCube); } bool wxApp::OnInitGui() @@ -695,7 +706,7 @@ void wxApp::RemoveIdleTag() #endif if (!g_isIdle) { - gtk_idle_remove( wxTheApp->m_idleTag ); + g_source_remove( wxTheApp->m_idleTag ); wxTheApp->m_idleTag = 0; g_isIdle = TRUE; }