X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/158949492d68bd0e98fab14dabcc3fa6f6924a6d..5bb372168ad19be2ee8888913589116e5a5c0eec:/src/gtk/app.cpp diff --git a/src/gtk/app.cpp b/src/gtk/app.cpp index c3e76d4158..8f8e0869dc 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 ); } //----------------------------------------------------------------------------- @@ -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() @@ -532,7 +543,7 @@ GdkVisual *wxApp::GetGdkVisual() if (m_glVisualInfo) visual = gdkx_visual_get( ((XVisualInfo *) m_glVisualInfo)->visualid ); else - visual = gdk_window_get_visual( wxGetRootWindow()->window ); + visual = gdk_drawable_get_visual( wxGetRootWindow()->window ); wxASSERT( visual ); @@ -544,18 +555,8 @@ bool wxApp::Initialize(int& argc, wxChar **argv) bool init_result; #if wxUSE_THREADS - // GTK 1.2 up to version 1.2.3 has broken threads - if ((gtk_major_version == 1) && - (gtk_minor_version == 2) && - (gtk_micro_version < 4)) - { - printf( "wxWidgets warning: GUI threading disabled due to outdated GTK version\n" ); - } - else - { - if (!g_thread_supported()) - g_thread_init(NULL); - } + if (!g_thread_supported()) + g_thread_init(NULL); #endif // wxUSE_THREADS gtk_set_locale(); @@ -695,7 +696,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; }