wl_display_roundtrip() works on the default queue. Add a parallel wl_display_roundtrip_queue(). --- src/wayland-client.c | 21 +++++++++++++++++++-- src/wayland-client.h | 2 ++ 2 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/src/wayland-client.c b/src/wayland-client.c index e8aab7e..35fc2b1 100644 --- a/src/wayland-client.c +++ b/src/wayland-client.c @@ -837,12 +837,12 @@ static const struct wl_callback_listener sync_listener = { * \return The number of dispatched events on success or -1 on failure * * Blocks until the server process all currently issued requests and - * sends out pending events on all event queues. + * sends out pending events on the event queue. * * \memberof wl_display */ WL_EXPORT int -wl_display_roundtrip(struct wl_display *display) +wl_display_roundtrip_queue(struct wl_display *display, struct wl_event_queue *queue) { struct wl_callback *callback; int done, ret = 0; @@ -851,6 +851,7 @@ wl_display_roundtrip(struct wl_display *display) callback = wl_display_sync(display); if (callback == NULL) return -1; + wl_proxy_set_queue(callback, queue); wl_callback_add_listener(callback, &sync_listener, &done); while (!done && ret >= 0) ret = wl_display_dispatch(display); @@ -861,6 +862,22 @@ wl_display_roundtrip(struct wl_display *display) return ret; } +/** Block until all pending request are processed by the server + * + * \param display The display context object + * \return The number of dispatched events on success or -1 on failure + * + * Blocks until the server process all currently issued requests and + * sends out pending events on the default event queue. + * + * \memberof wl_display + */ +WL_EXPORT int +wl_display_roundtrip(struct wl_display *display) +{ + wl_display_roundtrip_queue(display, display->default_queue); +} + static int create_proxies(struct wl_proxy *sender, struct wl_closure *closure) { diff --git a/src/wayland-client.h b/src/wayland-client.h index 2a32785..4377207 100644 --- a/src/wayland-client.h +++ b/src/wayland-client.h @@ -163,6 +163,8 @@ int wl_display_dispatch_pending(struct wl_display *display); int wl_display_get_error(struct wl_display *display); int wl_display_flush(struct wl_display *display); +int wl_display_roundtrip_queue(struct wl_display *display, + struct wl_event_queue *queue); int wl_display_roundtrip(struct wl_display *display); struct wl_event_queue *wl_display_create_queue(struct wl_display *display); -- 2.0.1 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel