From f8ebadabcd653f9642fedbd014224f70915868cf Mon Sep 17 00:00:00 2001 From: Julien Isorce Date: Mon, 1 Jun 2015 14:07:37 +0100 Subject: [PATCH] glcontext_gpu_process: close the window when done --- .../gst/gl/gpuprocess/gstglcontext_gpu_process.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/gst-libs/gst/gl/gpuprocess/gstglcontext_gpu_process.c b/gst-libs/gst/gl/gpuprocess/gstglcontext_gpu_process.c index f4c6c158cd..7082ebaeea 100644 --- a/gst-libs/gst/gl/gpuprocess/gstglcontext_gpu_process.c +++ b/gst-libs/gst/gl/gpuprocess/gstglcontext_gpu_process.c @@ -30,6 +30,7 @@ #define GST_CAT_DEFAULT gst_gl_context_debug +#define gst_gl_context_gpu_process_parent_class parent_class G_DEFINE_TYPE (GstGLContextGPUProcess, gst_gl_context_gpu_process, GST_GL_TYPE_CONTEXT); @@ -62,13 +63,26 @@ gst_gl_context_gpu_process_activate (GstGLContext * context, gboolean activate) return TRUE; } +static void +gst_gl_context_gpu_process_finalize (GObject * object) +{ + GstGLContext *context = GST_GL_CONTEXT (object); + + GST_GL_WINDOW_GET_CLASS (context->window)->close (context->window); + + G_OBJECT_CLASS (parent_class)->finalize (object); +} + static void gst_gl_context_gpu_process_class_init (GstGLContextGPUProcessClass * klass) { + GObjectClass *obj_class = G_OBJECT_CLASS (klass); GstGLContextClass *context_class = (GstGLContextClass *) klass; g_type_class_add_private (klass, sizeof (GstGLContextGPUProcessPrivate)); + obj_class->finalize = gst_gl_context_gpu_process_finalize; + context_class->get_gl_context = GST_DEBUG_FUNCPTR (gst_gl_context_gpu_process_get_gl_context); context_class->get_gl_api = @@ -123,7 +137,7 @@ gst_gl_context_gpu_process_new (GstGLDisplay * display, window = GST_GL_WINDOW (gst_gl_window_gpu_process_new (display)); gst_gl_context_set_window (context, window); - GST_GL_WINDOW_GET_CLASS (window)->open (context->window, NULL); + GST_GL_WINDOW_GET_CLASS (window)->open (window, NULL); gst_object_unref (window); return context;