diff options
author | Pekka Paalanen <ppaalanen@gmail.com> | 2013-02-08 17:01:25 +0200 |
---|---|---|
committer | Kristian Høgsberg <krh@bitplanet.net> | 2013-02-08 13:38:09 -0500 |
commit | 8aaef7d48ccd214a4b5c68cc8f35bbc7a1b458fd (patch) | |
tree | 415740c6bc36b2f2cfead937a2c23e9212a10bc0 /tests/weston-test-client-helper.c | |
parent | 19dadf26171c18d9ad1e96c523a0e0dabd673d20 (diff) | |
download | weston-8aaef7d48ccd214a4b5c68cc8f35bbc7a1b458fd.tar.gz |
tests: add frame callback waiting helpers
To avoid duplicating the code for setting and waiting for a frame
callback, add helpers for it.
Convert move_client() to use the new helpers.
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
Diffstat (limited to 'tests/weston-test-client-helper.c')
-rw-r--r-- | tests/weston-test-client-helper.c | 33 |
1 files changed, 24 insertions, 9 deletions
diff --git a/tests/weston-test-client-helper.c b/tests/weston-test-client-helper.c index 1a1b4f13..8d846ff3 100644 --- a/tests/weston-test-client-helper.c +++ b/tests/weston-test-client-helper.c @@ -41,8 +41,7 @@ surface_contains(struct surface *surface, int x, int y) } static void -move_client_frame_handler(void *data, - struct wl_callback *callback, uint32_t time) +frame_callback_handler(void *data, struct wl_callback *callback, uint32_t time) { int *done = data; @@ -52,14 +51,33 @@ move_client_frame_handler(void *data, } static const struct wl_callback_listener frame_listener = { - move_client_frame_handler + frame_callback_handler }; +struct wl_callback * +frame_callback_set(struct wl_surface *surface, int *done) +{ + struct wl_callback *callback; + + *done = 0; + callback = wl_surface_frame(surface); + wl_callback_add_listener(callback, &frame_listener, done); + + return callback; +} + +void +frame_callback_wait(struct client *client, int *done) +{ + while (!*done) { + assert(wl_display_dispatch(client->wl_display) >= 0); + } +} + void move_client(struct client *client, int x, int y) { struct surface *surface = client->surface; - struct wl_callback *callback; int done; client->surface->x = x; @@ -69,14 +87,11 @@ move_client(struct client *client, int x, int y) wl_surface_damage(surface->wl_surface, 0, 0, surface->width, surface->height); - callback = wl_surface_frame(surface->wl_surface); - done = 0; - wl_callback_add_listener(callback, &frame_listener, &done); + frame_callback_set(surface->wl_surface, &done); wl_surface_commit(surface->wl_surface); - while (!done) - wl_display_dispatch(client->wl_display); + frame_callback_wait(client, &done); } static void |