X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4230303c5415335c70caa0896163175d5e0e7da1..2fe417e4c40f5686a37d04b0e0f57a6fa6c2ceec:/src/gtk/glcanvas.cpp diff --git a/src/gtk/glcanvas.cpp b/src/gtk/glcanvas.cpp index 7cd95d0cab..30def50299 100644 --- a/src/gtk/glcanvas.cpp +++ b/src/gtk/glcanvas.cpp @@ -1,6 +1,6 @@ ///////////////////////////////////////////////////////////////////////////// // Name: gtk/glcanvas.cpp -// Purpose: wxGLCanvas, for using OpenGL/Mesa with wxWindows and GTK +// Purpose: wxGLCanvas, for using OpenGL/Mesa with wxWidgets and GTK // Author: Robert Roebling // Modified by: // Created: 17/08/98 @@ -160,8 +160,6 @@ wxPalette wxGLContext::CreateDefaultPalette() static gint gtk_glwindow_realized_callback( GtkWidget * WXUNUSED(widget), wxGLCanvas *win ) { - // VZ: apparently in some cases we're called twice -- no idea why, - // but a check doesn't hurt if ( !win->m_glContext ) { wxGLContext *share = win->m_sharedContext; @@ -322,7 +320,7 @@ bool wxGLCanvas::Create( wxWindow *parent, wxCHECK_MSG( m_vi, FALSE, _T("required visual couldn't be found") ); GdkVisual *visual = gdkx_visual_get( vi->visualid ); - GdkColormap *colormap = gdk_colormap_new( gdkx_visual_get(vi->visualid), TRUE ); + GdkColormap *colormap = gdk_colormap_new( visual, TRUE ); gtk_widget_push_colormap( colormap ); gtk_widget_push_visual( visual ); @@ -357,6 +355,9 @@ bool wxGLCanvas::Create( wxWindow *parent, gtk_widget_pop_visual(); gtk_widget_pop_colormap(); + // if our parent window is already visible, we had been realized before we + // connected to the "realize" signal and hence our m_glContext hasn't been + // initialized yet and we have to do it now if (GTK_WIDGET_REALIZED(m_wxwindow)) gtk_glwindow_realized_callback( m_wxwindow, this );