gl/wayland: allow a NULL wl_event_queue
authorMatthew Waters <matthew@centricular.com>
Wed, 27 May 2015 05:44:33 +0000 (15:44 +1000)
committerMatthew Waters <matthew@centricular.com>
Sun, 31 May 2015 06:04:13 +0000 (16:04 +1000)
perform operations on the default wl_display event queue in that case

gst-libs/gst/gl/wayland/wayland_event_source.c

index ba853f065932faa512bc7b2f8322e592e1f5a763..dd1cf8e8d31bfe7157382dca384b58cb251e6a3f 100644 (file)
@@ -62,9 +62,14 @@ gst_gl_wl_display_roundtrip_queue (struct wl_display *display,
   if (callback == NULL)
     return -1;
   wl_callback_add_listener (callback, &sync_listener, &done);
-  wl_proxy_set_queue ((struct wl_proxy *) callback, queue);
-  while (!done && ret >= 0)
-    ret = wl_display_dispatch_queue (display, queue);
+  if (queue) {
+    wl_proxy_set_queue ((struct wl_proxy *) callback, queue);
+    while (!done && ret >= 0)
+      ret = wl_display_dispatch_queue (display, queue);
+  } else {
+    while (!done && ret >= 0)
+      ret = wl_display_dispatch (display);
+  }
 
   if (ret == -1 && !done)
     wl_callback_destroy (callback);
@@ -114,7 +119,10 @@ wayland_event_source_dispatch (GSource * base,
   WaylandEventSource *source = (WaylandEventSource *) base;
 
   if (source->pfd.revents) {
-    wl_display_roundtrip_queue (source->display, source->queue);
+    if (source->queue)
+      wl_display_roundtrip_queue (source->display, source->queue);
+    else
+      wl_display_roundtrip (source->display);
     source->pfd.revents = 0;
   }