X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/954de0f158dff0bc9a92d7885ae5534a1088e54a..1be06faf7318abf88a35b299b90ceb2a49c0353b:/src/gtk/app.cpp diff --git a/src/gtk/app.cpp b/src/gtk/app.cpp index 7b9962d165..b452afc77a 100644 --- a/src/gtk/app.cpp +++ b/src/gtk/app.cpp @@ -29,7 +29,7 @@ #include "wx/image.h" #if wxUSE_THREADS -#include "wx/thread.h" + #include "wx/thread.h" #endif #include @@ -96,7 +96,7 @@ bool wxYield() if (has_idle) { /* re-add idle handler (very low priority) */ - wxTheApp->m_idleTag = gtk_idle_add_priority( 500, wxapp_idle_callback, (gpointer) NULL ); + wxTheApp->m_idleTag = gtk_idle_add_priority( 1000, wxapp_idle_callback, (gpointer) NULL ); } // disable log flushing from here because a call to wxYield() shouldn't @@ -179,7 +179,7 @@ void wxapp_install_idle_handler() to the main thread (and processing these in idle time). Very low priority. */ - wxTheApp->m_idleTag = gtk_idle_add_priority( 500, wxapp_idle_callback, (gpointer) NULL ); + wxTheApp->m_idleTag = gtk_idle_add_priority( 1000, wxapp_idle_callback, (gpointer) NULL ); g_isIdle = FALSE; } @@ -250,7 +250,7 @@ wxApp::wxApp() m_topWindow = (wxWindow *) NULL; m_exitOnFrameDelete = TRUE; - m_idleTag = gtk_idle_add( wxapp_idle_callback, (gpointer) NULL ); + m_idleTag = gtk_idle_add_priority( 1000, wxapp_idle_callback, (gpointer) NULL ); #if wxUSE_THREADS m_wakeUpTimerTag = 0; @@ -284,8 +284,13 @@ bool wxApp::OnInitGui() if ((gdk_visual_get_best() != gdk_visual_get_system()) && (m_useBestVisual)) { +#ifdef __WXGTK20__ + /* seems gtk_widget_set_default_visual no longer exists? */ + GdkVisual* vis = gtk_widget_get_default_visual(); +#else GdkVisual* vis = gdk_visual_get_best(); gtk_widget_set_default_visual( vis ); +#endif GdkColormap *colormap = gdk_colormap_new( vis, FALSE ); gtk_widget_set_default_colormap( colormap ); @@ -415,7 +420,7 @@ bool wxApp::SendIdleEvents( wxWindow* win ) wxIdleEvent event; event.SetEventObject(win); - win->ProcessEvent(event); + win->GetEventHandler()->ProcessEvent(event); win->OnInternalIdle(); @@ -543,7 +548,7 @@ void wxApp::CleanUp() // check for memory leaks #if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT - if (wxDebugContext::CountObjectsLeft() > 0) + if (wxDebugContext::CountObjectsLeft(TRUE) > 0) { wxLogDebug(wxT("There were memory leaks.\n")); wxDebugContext::Dump(); @@ -570,10 +575,10 @@ int wxEntryStart( int argc, char *argv[] ) { #if wxUSE_THREADS /* GTK 1.2 up to version 1.2.3 has broken threads */ - if ((gtk_major_version == 1) && + if ((gtk_major_version == 1) && (gtk_minor_version == 2) && (gtk_micro_version < 4)) - { + { printf( "wxWindows warning: GUI threading disabled due to outdated GTK version\n" ); } else @@ -584,7 +589,10 @@ int wxEntryStart( int argc, char *argv[] ) gtk_set_locale(); -#if wxUSE_WCHAR_T +#if defined(__WXGTK20__) + // gtk+ 2.0 supports Unicode through UTF-8 strings + wxConvCurrent = &wxConvUTF8; +#elif wxUSE_WCHAR_T if (!wxOKlibc()) wxConvCurrent = &wxConvLocal; #else if (!wxOKlibc()) wxConvCurrent = (wxMBConv*) NULL; @@ -645,9 +653,16 @@ void wxEntryCleanup() int wxEntry( int argc, char *argv[] ) { - int err; - - err = wxEntryStart(argc, argv); +#if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT + // This seems to be necessary since there are 'rogue' + // objects present at this point (perhaps global objects?) + // Setting a checkpoint will ignore them as far as the + // memory checking facility is concerned. + // Of course you may argue that memory allocated in globals should be + // checked, but this is a reasonable compromise. + wxDebugContext::SetCheckpoint(); +#endif + int err = wxEntryStart(argc, argv); if (err) return err;