From: Nicolas Dufresne Date: Fri, 17 Jul 2015 19:08:53 +0000 (-0400) Subject: gtkglsink: Don't leak vertex array and buffers X-Git-Tag: 1.16.2~686^2~56 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=067051f6feda65b7960dd9308868fb87a885add3;p=platform%2Fupstream%2Fgst-plugins-good.git gtkglsink: Don't leak vertex array and buffers This is now possible since reset is always called from the main thread. https://bugzilla.gnome.org/show_bug.cgi?id=752441 --- diff --git a/ext/gtk/gtkgstglwidget.c b/ext/gtk/gtkgstglwidget.c index b721984..ba01e60 100644 --- a/ext/gtk/gtkgstglwidget.c +++ b/ext/gtk/gtkgstglwidget.c @@ -360,6 +360,26 @@ _reset (GtkGstBaseWidget * base_widget) !base_widget->ignore_alpha); } +/* called from main thread */ +static void +gtk_gst_gl_widget_reset (GtkGstBaseWidget * base_widget) +{ + GtkGstGLWidgetPrivate *priv = GTK_GST_GL_WIDGET (base_widget)->priv; + const GstGLFuncs *gl = priv->other_context->gl_vtable; + + _reset (base_widget); + + if (priv->vao) { + gl->DeleteVertexArrays (1, &priv->vao); + priv->vao = 0; + } + + if (priv->vertex_buffer) { + gl->DeleteBuffers (1, &priv->vertex_buffer); + priv->vertex_buffer = 0; + } +} + static void gtk_gst_gl_widget_finalize (GObject * object) { @@ -393,7 +413,7 @@ gtk_gst_gl_widget_class_init (GtkGstGLWidgetClass * klass) gobject_klass->finalize = gtk_gst_gl_widget_finalize; gl_widget_klass->render = gtk_gst_gl_widget_render; - base_widget_klass->reset = _reset; + base_widget_klass->reset = gtk_gst_gl_widget_reset; } static void