diff --git a/gst-libs/gst/gl/gstglcontext.c b/gst-libs/gst/gl/gstglcontext.c index 98ed0ed8a2..ab63183fe4 100644 --- a/gst-libs/gst/gl/gstglcontext.c +++ b/gst-libs/gst/gl/gstglcontext.c @@ -1550,6 +1550,25 @@ gst_gl_context_get_display (GstGLContext * context) return gst_object_ref (context->priv->display); } +/** + * gst_gl_context_set_display: + * @context: a #GstGLContext: + * @display: a #GstGLDisplay: + * + * Ref @display and unref previous display if exists. + * + * Since: 1.6 + */ +void +gst_gl_context_set_display (GstGLContext * context, GstGLDisplay * display) +{ + g_return_if_fail (GST_GL_IS_CONTEXT (context)); + g_return_if_fail (GST_IS_GL_DISPLAY (display)); + + gst_object_replace ((GstObject **) & context->priv->display, + (GstObject *) display); +} + typedef struct { GstGLContext *context; diff --git a/gst-libs/gst/gl/gstglcontext.h b/gst-libs/gst/gl/gstglcontext.h index 7b19d6e1ca..3e5fc23a2b 100644 --- a/gst-libs/gst/gl/gstglcontext.h +++ b/gst-libs/gst/gl/gstglcontext.h @@ -124,6 +124,7 @@ gboolean gst_gl_context_activate (GstGLContext *context, gboolean a GThread * gst_gl_context_get_thread (GstGLContext *context); GstGLContext * gst_gl_context_get_current (void); +void gst_gl_context_set_display (GstGLContext *context, GstGLDisplay *display); GstGLDisplay * gst_gl_context_get_display (GstGLContext *context); gpointer gst_gl_context_get_proc_address (GstGLContext *context, const gchar *name); GstGLPlatform gst_gl_context_get_gl_platform (GstGLContext *context);