forked from AuroraMiddleware/gtk
media: Only force GL if we're using a GL renderer
When we are not using a GL renderer, getting GL textures is no advantage to us, so don't make gstreamer send its frames as GL memory in this case.
This commit is contained in:
parent
53fe751371
commit
536a67ec96
@ -20,10 +20,11 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include "gtkgstpaintableprivate.h"
|
#include "gtkgstpaintableprivate.h"
|
||||||
|
|
||||||
#include "gtkgstsinkprivate.h"
|
#include "gtkgstsinkprivate.h"
|
||||||
|
|
||||||
|
#include <gtk/gtk.h>
|
||||||
#include <gst/player/gstplayer-video-renderer.h>
|
#include <gst/player/gstplayer-video-renderer.h>
|
||||||
|
#include <gsk/gl/gskglrenderer.h>
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
@ -122,6 +123,9 @@ gtk_gst_paintable_video_renderer_create_video_sink (GstPlayerVideoRenderer *rend
|
|||||||
"gl-context", self->context,
|
"gl-context", self->context,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
if (self->context == NULL)
|
||||||
|
return sink;
|
||||||
|
|
||||||
glsinkbin = gst_element_factory_make ("glsinkbin", NULL);
|
glsinkbin = gst_element_factory_make ("glsinkbin", NULL);
|
||||||
|
|
||||||
g_object_set (glsinkbin, "sink", sink, NULL);
|
g_object_set (glsinkbin, "sink", sink, NULL);
|
||||||
@ -175,10 +179,20 @@ gtk_gst_paintable_realize (GtkGstPaintable *self,
|
|||||||
GdkSurface *surface)
|
GdkSurface *surface)
|
||||||
{
|
{
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
|
GtkNative *native;
|
||||||
|
GskRenderer *renderer;
|
||||||
|
|
||||||
if (self->context)
|
if (self->context)
|
||||||
return;
|
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);
|
self->context = gdk_surface_create_gl_context (surface, &error);
|
||||||
if (self->context == NULL)
|
if (self->context == NULL)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user