waylandsink: Set external surfaces and their child objects to use our own event queue
authorGeorge Kiagiadakis <george.kiagiadakis@collabora.com>
Mon, 10 Mar 2014 11:50:06 +0000 (13:50 +0200)
committerGeorge Kiagiadakis <george.kiagiadakis@collabora.com>
Tue, 17 Jun 2014 11:51:24 +0000 (13:51 +0200)
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.

ext/wayland/gstwaylandsink.c

index db2c2e6..06e6fd9 100644 (file)
@@ -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);
     }