Commit ad30262f authored by Alexander Larsson's avatar Alexander Larsson

GtkGLArea: Always destroy context on unrealize

We had some code that tried to reuse the context over realize, but
that doesn't work as we need to share with the possibly new
paint context of the re-realized window.
parent 5f14630b
......@@ -247,7 +247,10 @@ gtk_gl_area_unrealize (GtkWidget *widget)
else
g_warning ("can't free framebuffer");
gdk_gl_context_clear_current ();
/* Make sure to destroy if current */
g_object_run_dispose (G_OBJECT (priv->context));
g_object_unref (priv->context);
priv->context = NULL;
}
g_clear_error (&priv->error);
......@@ -379,24 +382,12 @@ gtk_gl_area_draw (GtkWidget *widget,
return TRUE;
}
static void
gtk_gl_area_screen_changed (GtkWidget *widget,
GdkScreen *old_screen)
{
GtkGLArea *self = GTK_GL_AREA (widget);
GtkGLAreaPrivate *priv = gtk_gl_area_get_instance_private (self);
/* this will cause the context to be recreated on realize */
g_clear_object (&priv->context);
}
static void
gtk_gl_area_class_init (GtkGLAreaClass *klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
widget_class->screen_changed = gtk_gl_area_screen_changed;
widget_class->realize = gtk_gl_area_realize;
widget_class->unrealize = gtk_gl_area_unrealize;
widget_class->size_allocate = gtk_gl_area_size_allocate;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment