#include "wx/unix/private.h"
#include "wx/gtk/win_gtk.h"
+#include "wx/gtk/private.h"
#include <gtk/gtk.h>
+//-----------------------------------------------------------------------------
+// link GnomeVFS
+//-----------------------------------------------------------------------------
+
+#if wxUSE_LIBGNOMEVFS
+#include "wx/html/forcelnk.h"
+FORCE_LINK(gnome_vfs)
+#endif
+
//-----------------------------------------------------------------------------
// global data
//-----------------------------------------------------------------------------
// idle system
//-----------------------------------------------------------------------------
-extern bool g_isIdle;
-
void wxapp_install_idle_handler();
#if wxUSE_THREADS
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
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 );
}
//-----------------------------------------------------------------------------
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()
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 );
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();
#endif
if (!g_isIdle)
{
- gtk_idle_remove( wxTheApp->m_idleTag );
+ g_source_remove( wxTheApp->m_idleTag );
wxTheApp->m_idleTag = 0;
g_isIdle = TRUE;
}