/////////////////////////////////////////////////////////////////////////////
// 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
static gint
gtk_glwindow_realized_callback( GtkWidget * WXUNUSED(widget), wxGLCanvas *win )
{
- wxGLContext *share= win->m_sharedContext;
- if (share==NULL && win->m_sharedContextOf) share=win->m_sharedContextOf->GetContext();
+ if ( !win->m_glContext )
+ {
+ wxGLContext *share = win->m_sharedContext;
+ if ( !share && win->m_sharedContextOf )
+ share = win->m_sharedContextOf->GetContext();
- win->m_glContext = new wxGLContext( TRUE, win, wxNullPalette, share );
+ win->m_glContext = new wxGLContext( TRUE, win, wxNullPalette, share );
+ }
return FALSE;
}
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 );
gtk_widget_pop_visual();
gtk_widget_pop_colormap();
- if (GTK_WIDGET_REALIZED(m_wxwindow))
- gtk_glwindow_realized_callback( m_wxwindow, this );
-
- if (GTK_WIDGET_MAPPED(m_wxwindow))
- gtk_glwindow_map_callback( m_wxwindow, this );
-
return TRUE;
}
XVisualInfo *vi = (XVisualInfo *) m_vi;
if (vi && m_canFreeVi) XFree( vi );
- if (m_glContext) delete m_glContext;
+ delete m_glContext;
}
void* wxGLCanvas::ChooseGLVisual(int *attribList)