// "realize" from m_wxwindow
//-----------------------------------------------------------------------------
+extern "C" {
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;
return FALSE;
}
+}
//-----------------------------------------------------------------------------
// "map" from m_wxwindow
//-----------------------------------------------------------------------------
+extern "C" {
static gint
gtk_glwindow_map_callback( GtkWidget * WXUNUSED(widget), wxGLCanvas *win )
{
return FALSE;
}
+}
//-----------------------------------------------------------------------------
// "expose_event" of m_wxwindow
//-----------------------------------------------------------------------------
+extern "C" {
static void
gtk_glwindow_expose_callback( GtkWidget *WXUNUSED(widget), GdkEventExpose *gdk_event, wxGLCanvas *win )
{
gdk_event->area.width,
gdk_event->area.height );
}
+}
//-----------------------------------------------------------------------------
// "draw" of m_wxwindow
//-----------------------------------------------------------------------------
#ifndef __WXGTK20__
+extern "C" {
static void
gtk_glwindow_draw_callback( GtkWidget *WXUNUSED(widget), GdkRectangle *rect, wxGLCanvas *win )
{
win->GetUpdateRegion().Union( rect->x, rect->y,
rect->width, rect->height );
}
+}
#endif
//-----------------------------------------------------------------------------
// "size_allocate" of m_wxwindow
//-----------------------------------------------------------------------------
+extern "C" {
static void
gtk_glcanvas_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* alloc, wxGLCanvas *win )
{
event.SetEventObject( win );
win->GetEventHandler()->ProcessEvent( event );
}
+}
//---------------------------------------------------------------------------
// wxGlCanvas
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 );