[gtk/matthiasc/gl-media-stream] Only force GL if we're using a GL renderer
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/matthiasc/gl-media-stream] Only force GL if we're using a GL renderer
- Date: Fri, 1 Jan 2021 17:15:51 +0000 (UTC)
commit 8bf2ba3d8d96efebb1c4378a3c8483fe7cd304dc
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..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 <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))
+ {
+ 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)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]