Wayland gtk windowing (glimagesink)

Gregoire Gentil gregoire at gentil.com
Sun Apr 28 21:24:45 UTC 2024


Hello,

I had an application with a gtk+-3.0 window and a pipeline "... ! 
imagesink". The video is rendered inside the gtk window.

I was doing:
static void realize_cb(GtkWidget *widget, CustomData *data) {
GdkWindow *window = gtk_widget_get_window(widget);
data->window_handle = GDK_WINDOW_XID(window);

and then:

static GstBusSyncReply bus_sync_handler(GstBus * bus, GstMessage * 
message, CustomData *data) {
gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(data->video_sink), 
data->window_handle);

Everything was working fine. I want now to support wayland system.

Pipeline becomes: "... ! glimagesink".

in the realize_cb function, I have now:
GdkWindow *window = gtk_widget_get_window(widget);
data->window_handle = (guintptr)gdk_wayland_window_get_wl_surface(window);


At run-time, I'm getting hundreds of:
"GStreamer-GL-CRITICAL **: 14:06:48.263: Failed to flush Wayland connection"

What am I doing wrong? Many thanks in advance for any hint,

Grégoire



More information about the gstreamer-devel mailing list