]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/app.cpp
Use wxGtkString here to clean up code, and not leak in debug builds
[wxWidgets.git] / src / gtk / app.cpp
index 862bf4da14cb9660c445fabe4e569ce9c38f7bd2..987ce870f2d086826dac7eae79b2b615e2f5e5d2 100644 (file)
@@ -74,6 +74,7 @@
 
 #include "wx/unix/private.h"
 #include "wx/gtk/win_gtk.h"
+#include "wx/gtk/private.h"
 
 #include <gtk/gtk.h>
 
@@ -90,8 +91,6 @@ static GtkWidget *gs_RootWindow = (GtkWidget*) NULL;
 // idle system
 //-----------------------------------------------------------------------------
 
-extern bool g_isIdle;
-
 void wxapp_install_idle_handler();
 
 #if wxUSE_THREADS
@@ -249,17 +248,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 +374,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 +419,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 +431,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 +697,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;
     }