wxMutexGuiEnter();
#endif
- if (g_isIdle)
+ if (g_isIdle)
wxapp_install_idle_handler();
-
+
#if wxUSE_THREADS
if (!wxThread::IsMain())
wxMutexGuiLeave();
// unblock other threads wishing to do some GUI things
wxMutexGuiLeave();
-
+
g_mainThreadLocked = TRUE;
// wake up other threads
// release lock again
gdk_threads_leave();
-
+
return TRUE;
}
#endif
m_colorCube = (unsigned char*) NULL;
+
+ m_useBestVisual = FALSE;
}
wxApp::~wxApp()
/* on some machines, the default visual is just 256 colours, so
we make sure we get the best. this can sometimes be wasteful,
of course, but what do these guys pay $30.000 for? */
-
- if (gdk_visual_get_best() != gdk_visual_get_system())
+
+ if ((gdk_visual_get_best() != gdk_visual_get_system()) &&
+ (m_useBestVisual))
{
GdkVisual* vis = gdk_visual_get_best();
gtk_widget_set_default_visual( vis );
visual = vis;
}
- wxRootWindow = gtk_window_new( GTK_WINDOW_TOPLEVEL );
- gtk_widget_realize( wxRootWindow );
-
/* Nothing to do for 15, 16, 24, 32 bit displays */
if (visual->depth > 8) return TRUE;
void wxApp::OnIdle( wxIdleEvent &event )
{
static bool s_inOnIdle = FALSE;
-
+
/* Avoid recursion (via ProcessEvent default case) */
if (s_inOnIdle)
return;
-
+
s_inOnIdle = TRUE;
/* Resend in the main thread events which have been prepared in other
if (wxTheColourDatabase)
delete wxTheColourDatabase;
-
+
wxTheColourDatabase = (wxColourDatabase*) NULL;
wxDeleteStockObjects();
/* 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))
+ (gtk_micro_version < 4))
{
printf( "wxWindows warning: Disabled GUI threading due to outdated GTK version\n" );
}
g_thread_init(NULL);
}
#endif
-
+
gtk_set_locale();
#if wxUSE_WCHAR_T
#if wxUSE_UNICODE
wxTheApp->argv = new wxChar*[argc+1];
int mb_argc = 0;
- while (mb_argc < argc)
+ while (mb_argc < argc)
{
wxTheApp->argv[mb_argc] = wxStrdup(wxConvLibc.cMB2WX(argv[mb_argc]));
mb_argc++;
if ( !wxTheApp->OnInitGui() )
retValue = -1;
+ wxRootWindow = gtk_window_new( GTK_WINDOW_TOPLEVEL );
+ gtk_widget_realize( wxRootWindow );
+
// Here frames insert themselves automatically into wxTopLevelWindows by
// getting created in OnInit().
if ( retValue == 0 )
if (wxTheApp->Initialized())
{
- retValue = wxTheApp->OnRun();
+ wxTheApp->OnRun();
wxWindow *topWindow = wxTheApp->GetTopWindow();
if (topWindow)
wxTheApp->SetTopWindow( (wxWindow*) NULL );
}
}
- wxTheApp->OnExit();
+
+ retValue = wxTheApp->OnExit();
}
}