check for multiple calls to gtk_glwindow_realized_callback

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27097 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2004-05-04 15:00:36 +00:00
parent ce1c674598
commit 4230303c54
2 changed files with 20 additions and 8 deletions

View File

@ -160,10 +160,16 @@ wxPalette wxGLContext::CreateDefaultPalette()
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();
// 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;
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;
}
@ -365,7 +371,7 @@ wxGLCanvas::~wxGLCanvas()
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)

View File

@ -160,10 +160,16 @@ wxPalette wxGLContext::CreateDefaultPalette()
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();
// 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;
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;
}
@ -365,7 +371,7 @@ wxGLCanvas::~wxGLCanvas()
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)