summaryrefslogtreecommitdiff
path: root/tests/weston-test-client-helper.c
diff options
context:
space:
mode:
authorPekka Paalanen <ppaalanen@gmail.com>2013-02-08 17:01:25 +0200
committerKristian Høgsberg <krh@bitplanet.net>2013-02-08 13:38:09 -0500
commit8aaef7d48ccd214a4b5c68cc8f35bbc7a1b458fd (patch)
tree415740c6bc36b2f2cfead937a2c23e9212a10bc0 /tests/weston-test-client-helper.c
parent19dadf26171c18d9ad1e96c523a0e0dabd673d20 (diff)
downloadweston-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.c33
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