diff --git a/modules/media/gtkgstpaintable.c b/modules/media/gtkgstpaintable.c index fcc5a4f1d2..470a5f59e4 100644 --- a/modules/media/gtkgstpaintable.c +++ b/modules/media/gtkgstpaintable.c @@ -20,10 +20,11 @@ #include "config.h" #include "gtkgstpaintableprivate.h" - #include "gtkgstsinkprivate.h" +#include #include +#include #include @@ -122,6 +123,9 @@ gtk_gst_paintable_video_renderer_create_video_sink (GstPlayerVideoRenderer *rend "gl-context", self->context, NULL); + if (self->context == NULL) + return sink; + glsinkbin = gst_element_factory_make ("glsinkbin", NULL); g_object_set (glsinkbin, "sink", sink, NULL); @@ -175,10 +179,20 @@ gtk_gst_paintable_realize (GtkGstPaintable *self, GdkSurface *surface) { GError *error = NULL; + GtkNative *native; + GskRenderer *renderer; if (self->context) return; + native = gtk_native_get_for_surface (surface); + renderer = gtk_native_get_renderer (native); + if (!GSK_IS_GL_RENDERER (renderer)) + { + GST_INFO ("not using GL with a %s renderer\n", G_OBJECT_TYPE_NAME (renderer)); + return; + } + self->context = gdk_surface_create_gl_context (surface, &error); if (self->context == NULL) {