From 792299d9aede202f5959177931acef9cb4871d14 Mon Sep 17 00:00:00 2001 From: Matthew Waters Date: Fri, 1 Jul 2016 16:18:55 +1000 Subject: [PATCH] glwindow: marshal gst_gl_window_resize through the window loop saves having every caller do it themselves. --- gst-libs/gst/gl/gstglwindow.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/gst-libs/gst/gl/gstglwindow.c b/gst-libs/gst/gl/gstglwindow.c index d30b911d77..b74d39755e 100644 --- a/gst-libs/gst/gl/gstglwindow.c +++ b/gst-libs/gst/gl/gstglwindow.c @@ -1162,13 +1162,35 @@ gst_gl_window_queue_resize (GstGLWindow * window) window_class->queue_resize (window); } +struct resize_data +{ + GstGLWindow *window; + guint width, height; +}; + +static void +_on_resize (gpointer data) +{ + struct resize_data *resize = data; + + resize->window->resize (resize->window->resize_data, resize->width, + resize->height); +} + void gst_gl_window_resize (GstGLWindow * window, guint width, guint height) { g_return_if_fail (GST_IS_GL_WINDOW (window)); - if (window->resize) - window->resize (window->resize_data, width, height); + if (window->resize) { + struct resize_data resize = { 0, }; + + resize.window = window; + resize.width = width; + resize.height = height; + + gst_gl_window_send_message (window, (GstGLWindowCB) _on_resize, &resize); + } window->priv->surface_width = width; window->priv->surface_height = height;