From 31a9a4831fcb4558e0321303d7cf188619ad2646 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Molinari?= Date: Thu, 22 Feb 2024 14:01:29 +0100 Subject: [PATCH] tests: Only wait for frame callback when necessary MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some tests don't need to wait for the frame callback when a surface is moved. This commit renames the move_client() helper function to move_client_frame_sync() so that tests which need synchronisation must explicitely request it. This allows to get 4 more tests using repaint only on capture and to speed up runtime. Signed-off-by: Loïc Molinari --- tests/alpha-blending-test.c | 1 - tests/buffer-transforms-test.c | 1 - tests/output-damage-test.c | 2 +- tests/output-transforms-test.c | 1 - tests/pointer-shot-test.c | 2 +- tests/pointer-test.c | 2 +- tests/viewporter-shot-test.c | 1 - tests/weston-test-client-helper.c | 13 +++++++++++-- tests/weston-test-client-helper.h | 3 +++ 9 files changed, 17 insertions(+), 9 deletions(-) diff --git a/tests/alpha-blending-test.c b/tests/alpha-blending-test.c index 8e9cc67d..31880b73 100644 --- a/tests/alpha-blending-test.c +++ b/tests/alpha-blending-test.c @@ -71,7 +71,6 @@ fixture_setup(struct weston_test_harness *harness, const struct setup_args *arg) setup.width = BLOCK_WIDTH * ALPHA_STEPS; setup.height = 16; setup.shell = SHELL_TEST_DESKTOP; - setup.refresh = HIGHEST_OUTPUT_REFRESH; if (arg->color_management) { #if !BUILD_COLOR_LCMS diff --git a/tests/buffer-transforms-test.c b/tests/buffer-transforms-test.c index 34fa05f8..f7ec51e1 100644 --- a/tests/buffer-transforms-test.c +++ b/tests/buffer-transforms-test.c @@ -80,7 +80,6 @@ fixture_setup(struct weston_test_harness *harness, const struct setup_args *arg) setup.scale = arg->scale; setup.transform = arg->transform; setup.shell = SHELL_TEST_DESKTOP; - setup.refresh = HIGHEST_OUTPUT_REFRESH; return weston_test_harness_execute_as_client(harness, &setup); } diff --git a/tests/output-damage-test.c b/tests/output-damage-test.c index e3f5cb0a..fca6cb5f 100644 --- a/tests/output-damage-test.c +++ b/tests/output-damage-test.c @@ -214,7 +214,7 @@ TEST(output_damage) } client->surface->buffer = buf[0]; - move_client(client, 19, 19); + move_client_frame_sync(client, 19, 19); /* * Each time we commit a buffer with a different color, the damage box diff --git a/tests/output-transforms-test.c b/tests/output-transforms-test.c index 9e5fda98..006ab35a 100644 --- a/tests/output-transforms-test.c +++ b/tests/output-transforms-test.c @@ -92,7 +92,6 @@ fixture_setup(struct weston_test_harness *harness, const struct setup_args *arg) setup.scale = arg->scale; setup.transform = arg->transform; setup.shell = SHELL_TEST_DESKTOP; - setup.refresh = HIGHEST_OUTPUT_REFRESH; return weston_test_harness_execute_as_client(harness, &setup); } diff --git a/tests/pointer-shot-test.c b/tests/pointer-shot-test.c index ed3497c4..1ce806cc 100644 --- a/tests/pointer-shot-test.c +++ b/tests/pointer-shot-test.c @@ -142,7 +142,7 @@ TEST(pointer_cursor_retains_committed_buffer_after_reenter) client->surface = main_surface; client->surface->buffer = create_shm_buffer_a8r8g8b8(client, 100, 100); fill_image_with_color(client->surface->buffer->image, &red); - move_client(client, 50, 50); + move_client_frame_sync(client, 50, 50); /* Move the pointer into the main surface. */ send_motion(client, &t1, 100, 100); diff --git a/tests/pointer-test.c b/tests/pointer-test.c index 79753cfd..c6f76b5a 100644 --- a/tests/pointer-test.c +++ b/tests/pointer-test.c @@ -363,7 +363,7 @@ TEST(test_pointer_surface_move) check_pointer_move(client, 50, 50); /* move client center to pointer */ - move_client(client, 0, 0); + move_client_frame_sync(client, 0, 0); assert(surface_contains(client->surface, 50, 50)); check_pointer(client, 50, 50); diff --git a/tests/viewporter-shot-test.c b/tests/viewporter-shot-test.c index f5ddab0d..1f9bca85 100644 --- a/tests/viewporter-shot-test.c +++ b/tests/viewporter-shot-test.c @@ -58,7 +58,6 @@ fixture_setup(struct weston_test_harness *harness, compositor_setup_defaults(&setup); setup.renderer = arg->renderer; setup.shell = SHELL_TEST_DESKTOP; - setup.refresh = HIGHEST_OUTPUT_REFRESH; return weston_test_harness_execute_as_client(harness, &setup); } diff --git a/tests/weston-test-client-helper.c b/tests/weston-test-client-helper.c index ba6b33f5..74480fc3 100644 --- a/tests/weston-test-client-helper.c +++ b/tests/weston-test-client-helper.c @@ -119,7 +119,7 @@ move_client_internal(struct client *client, int x, int y) } void -move_client(struct client *client, int x, int y) +move_client_frame_sync(struct client *client, int x, int y) { struct surface *surface = client->surface; int done; @@ -130,6 +130,15 @@ move_client(struct client *client, int x, int y) frame_callback_wait(client, &done); } +void +move_client(struct client *client, int x, int y) +{ + struct surface *surface = client->surface; + + move_client_internal(client, x, y); + wl_surface_commit(surface->wl_surface); +} + void move_client_offscreenable(struct client *client, int x, int y) { @@ -1108,7 +1117,7 @@ create_client_and_test_surface(int x, int y, int width, int height) width, height); pixman_image_unref(solid); - move_client(client, x, y); + move_client_frame_sync(client, x, y); return client; } diff --git a/tests/weston-test-client-helper.h b/tests/weston-test-client-helper.h index 3ac1013a..c002773f 100644 --- a/tests/weston-test-client-helper.h +++ b/tests/weston-test-client-helper.h @@ -230,6 +230,9 @@ surface_contains(struct surface *surface, int x, int y); void move_client(struct client *client, int x, int y); +void +move_client_frame_sync(struct client *client, int x, int y); + void move_client_offscreenable(struct client *client, int x, int y);