[gtk/matthiasc/gl-media-stream] Only force GL if we're using a GL renderer



commit 5c1e4322ca06188ed6530eb50233c8f5596bb49d
Author: Matthias Clasen <mclasen redhat com>
Date:   Fri Jan 1 12:12:35 2021 -0500

    Only force GL if we're using a GL renderer

 modules/media/gtkgstpaintable.c | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)
---
diff --git a/modules/media/gtkgstpaintable.c b/modules/media/gtkgstpaintable.c
index fcc5a4f1d2..8a1aa486ba 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 <gtk/gtk.h>
 #include <gst/player/gstplayer-video-renderer.h>
+#include <gsk/gl/gskglrenderer.h>
 
 #include <math.h>
 
@@ -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))
+    {
+      g_print ("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)
     {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]