mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 20:21:24 +00:00
gtk: implement basic wayland GL support
This commit is contained in:
parent
53b0808042
commit
874b578d05
1 changed files with 24 additions and 0 deletions
|
@ -33,6 +33,11 @@
|
|||
#include <gst/gl/x11/gstglcontext_glx.h>
|
||||
#endif
|
||||
|
||||
#if GST_GL_HAVE_WINDOW_WAYLAND && defined (GDK_WINDOWING_WAYLAND)
|
||||
#include <gdk/gdkwayland.h>
|
||||
#include <gst/gl/wayland/gstgldisplay_wayland.h>
|
||||
#endif
|
||||
|
||||
/**
|
||||
* SECTION:gtkgstglwidget
|
||||
* @short_description: a #GtkGLArea that renders GStreamer video #GstBuffers
|
||||
|
@ -503,6 +508,14 @@ gtk_gst_gl_widget_init (GtkGstGLWidget * widget)
|
|||
gst_gl_display_x11_new_with_display (gdk_x11_display_get_xdisplay
|
||||
(display));
|
||||
#endif
|
||||
#if GST_GL_HAVE_WINDOW_WAYLAND && defined (GDK_WINDOWING_WAYLAND)
|
||||
if (GDK_IS_WAYLAND_DISPLAY (display)) {
|
||||
struct wl_display *wayland_display =
|
||||
gdk_wayland_display_get_wl_display (display);
|
||||
widget->priv->display = (GstGLDisplay *)
|
||||
gst_gl_display_wayland_new_with_display (wayland_display);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!widget->priv->display)
|
||||
widget->priv->display = gst_gl_display_new ();
|
||||
|
@ -575,6 +588,17 @@ _get_gl_context (GtkGstGLWidget * gst_widget)
|
|||
platform, gl_api);
|
||||
}
|
||||
#endif
|
||||
#if GST_GL_HAVE_WINDOW_WAYLAND && defined (GDK_WINDOWING_WAYLAND)
|
||||
if (GST_IS_GL_DISPLAY_WAYLAND (gst_widget->priv->display)) {
|
||||
platform = GST_GL_PLATFORM_EGL;
|
||||
gl_api = gst_gl_context_get_current_gl_api (NULL, NULL);
|
||||
gl_handle = gst_gl_context_get_current_gl_context (platform);
|
||||
if (gl_handle)
|
||||
gst_widget->priv->other_context =
|
||||
gst_gl_context_new_wrapped (gst_widget->priv->display, gl_handle,
|
||||
platform, gl_api);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (gst_widget->priv->other_context) {
|
||||
GError *error = NULL;
|
||||
|
|
Loading…
Reference in a new issue