#endif
#include <unistd.h>
+#include "wx/gtk/win_gtk.h"
-#include <glib.h>
-#include <gdk/gdk.h>
#include <gtk/gtk.h>
-#include "wx/gtk/win_gtk.h"
//-----------------------------------------------------------------------------
// global data
g_isIdle = TRUE;
}
- while (gtk_events_pending())
- gtk_main_iteration();
-
// disable log flushing from here because a call to wxYield() shouldn't
// normally result in message boxes popping up &c
wxLog::Suspend();
+ while (gtk_events_pending())
+ gtk_main_iteration();
+
/* it's necessary to call ProcessIdle() to update the frames sizes which
might have been changed (it also will update other things set from
OnUpdateUI() which is a nice (and desired) side effect) */
return TRUE;
#ifdef __WXDEBUG__
+ // don't generate the idle events while the assert modal dialog is shown,
+ // this completely confuses the apps which don't expect to be reentered
+ // from some safely-looking functions
if ( wxTheApp->IsInAssert() )
{
- // don't generate the idle events while the assert modal dialog is
- // shown, this completely confuses the apps which don't expect to be
- // reentered from some safely-looking functions
- return FALSE;
+ return TRUE;
}
#endif // __WXDEBUG__
g_isIdle = TRUE;
wxTheApp->m_idleTag = 0;
- // Sent idle event to all who request them
- while (wxTheApp->ProcessIdle()) { }
+ // Sent idle event to all who request them as long as they do
+ while (wxTheApp->ProcessIdle())
+ ;
// Release lock again
gdk_threads_leave();
#endif
m_colorCube = (unsigned char*) NULL;
+
+ // this is NULL for a "regular" wxApp, but is set (and freed) by a wxGLApp
+ m_glVisualInfo = (void *) NULL;
}
wxApp::~wxApp()
GdkVisual *visual = gdk_visual_get_system();
+ // if this is a wxGLApp (derived from wxApp), and we've already
+ // chosen a specific visual, then derive the GdkVisual from that
+ if (m_glVisualInfo != NULL) {
+#ifdef __WXGTK20__
+ /* seems gtk_widget_set_default_visual no longer exists? */
+ GdkVisual* vis = gtk_widget_get_default_visual();
+#else
+ GdkVisual* vis = gdkx_visual_get(
+ ((XVisualInfo *) m_glVisualInfo) ->visualid );
+ gtk_widget_set_default_visual( vis );
+#endif
+
+ GdkColormap *colormap = gdk_colormap_new( vis, FALSE );
+ gtk_widget_set_default_colormap( colormap );
+
+ visual = vis;
+ }
+
/* 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()) &&
+ else if ((gdk_visual_get_best() != gdk_visual_get_system()) &&
(m_useBestVisual))
{
#ifdef __WXGTK20__