diff options
| author | Giulio Camuffo <giuliocamuffo@gmail.com> | 2014-08-20 19:29:09 +0300 |
|---|---|---|
| committer | Pekka Paalanen <pekka.paalanen@collabora.co.uk> | 2014-08-21 10:12:46 +0300 |
| commit | 77dd068d422fdc82279cd4165fb7f3e29f35e33d (patch) | |
| tree | 6b5380c21a9bfe07b8ddf8d7bdb3f99d9a872b31 /src | |
| parent | wl_surface: clarify the base of time passed in the callback of frame (diff) | |
| download | wayland-77dd068d422fdc82279cd4165fb7f3e29f35e33d.tar wayland-77dd068d422fdc82279cd4165fb7f3e29f35e33d.tar.gz wayland-77dd068d422fdc82279cd4165fb7f3e29f35e33d.tar.bz2 wayland-77dd068d422fdc82279cd4165fb7f3e29f35e33d.tar.lz wayland-77dd068d422fdc82279cd4165fb7f3e29f35e33d.tar.xz wayland-77dd068d422fdc82279cd4165fb7f3e29f35e33d.tar.zst wayland-77dd068d422fdc82279cd4165fb7f3e29f35e33d.zip | |
client: add a public function to make a roundtrip on a custom queue
wl_display_roundtrip() works on the default queue. Add a parallel
wl_display_roundtrip_queue().
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Diffstat (limited to 'src')
| -rw-r--r-- | src/wayland-client.c | 24 | ||||
| -rw-r--r-- | src/wayland-client.h | 2 |
2 files changed, 23 insertions, 3 deletions
diff --git a/src/wayland-client.c b/src/wayland-client.c index 3e401d3..15a5acc 100644 --- a/src/wayland-client.c +++ b/src/wayland-client.c @@ -891,15 +891,16 @@ static const struct wl_callback_listener sync_listener = { /** Block until all pending request are processed by the server * * \param display The display context object + * \param queue The queue on which to run the roundtrip * \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; @@ -908,9 +909,10 @@ wl_display_roundtrip(struct wl_display *display) callback = wl_display_sync(display); if (callback == NULL) return -1; + wl_proxy_set_queue((struct wl_proxy *) callback, queue); wl_callback_add_listener(callback, &sync_listener, &done); while (!done && ret >= 0) - ret = wl_display_dispatch(display); + ret = wl_display_dispatch_queue(display, queue); if (ret == -1 && !done) wl_callback_destroy(callback); @@ -918,6 +920,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) +{ + return 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 dc4df53..0801a81 100644 --- a/src/wayland-client.h +++ b/src/wayland-client.h @@ -166,6 +166,8 @@ uint32_t wl_display_get_protocol_error(struct wl_display *display, uint32_t *id); 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); |
