summaryrefslogtreecommitdiff
path: root/ext/wayland
diff options
context:
space:
mode:
authorGeorge Kiagiadakis <george.kiagiadakis@collabora.com>2014-03-10 13:50:06 +0200
committerGeorge Kiagiadakis <george.kiagiadakis@collabora.com>2014-06-17 13:51:24 +0200
commit12444ec84e6b2790a8f8a05be4254e3bfd1a42f4 (patch)
tree87c19dd72962c57a0b619f52ec129ccc820fcdd0 /ext/wayland
parentfabc5305be5530e89ec351e9422918226185df89 (diff)
downloadgstreamer-plugins-bad-12444ec84e6b2790a8f8a05be4254e3bfd1a42f4.tar.gz
waylandsink: Set external surfaces and their child objects to use our own event queue
This fixes weird freezes because of frame_redraw_callback() not being called from the main thread when it should with weston's toy toolkit. It's also safer to know that frame_redraw_callback() will always be called from our display thread... Otherwise it could be called after the sink has been destroyed for example.
Diffstat (limited to 'ext/wayland')
-rw-r--r--ext/wayland/gstwaylandsink.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/ext/wayland/gstwaylandsink.c b/ext/wayland/gstwaylandsink.c
index db2c2e64e..06e6fd9e7 100644
--- a/ext/wayland/gstwaylandsink.c
+++ b/ext/wayland/gstwaylandsink.c
@@ -652,6 +652,8 @@ gst_wayland_sink_set_window_handle (GstVideoOverlay * overlay, guintptr handle)
("Failed to use the external wayland display: '%s'", error->message));
g_error_free (error);
} else {
+ wl_proxy_set_queue ((struct wl_proxy *) whandle->surface,
+ sink->display->queue);
sink->window = gst_wl_window_new_from_surface (sink->display,
whandle->surface, whandle->width, whandle->height);
}