From 22033acd68e7b7731a08af3dfe29e70e4a0cfd0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 12 Mar 2025 12:29:31 +0800 Subject: [PATCH] tests/ref-test: Add API to capture without full damage This can be useful to capture the screen content with broken damage. Part-of: --- src/tests/meta-ref-test.c | 32 +++++++++++++++++++++++++++++--- src/tests/meta-ref-test.h | 6 ++++++ 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/tests/meta-ref-test.c b/src/tests/meta-ref-test.c index 793c2c5c7..9b0a689ce 100644 --- a/src/tests/meta-ref-test.c +++ b/src/tests/meta-ref-test.c @@ -146,7 +146,8 @@ on_after_paint (MetaStage *stage, } static cairo_surface_t * -capture_view (ClutterStageView *stage_view) +capture_view (ClutterStageView *stage_view, + gboolean queue_damage) { MetaRendererView *view = META_RENDERER_VIEW (stage_view); MetaCrtc *crtc = meta_renderer_view_get_crtc (view); @@ -165,7 +166,8 @@ capture_view (ClutterStageView *stage_view) META_STAGE_WATCH_AFTER_PAINT, on_after_paint, &data); - clutter_stage_view_add_redraw_clip (stage_view, NULL); + if (queue_damage) + clutter_stage_view_add_redraw_clip (stage_view, NULL); clutter_stage_view_schedule_update (stage_view); g_main_loop_run (data.loop); @@ -185,7 +187,15 @@ view_adaptor_capture (gpointer adaptor_data) { ClutterStageView *view = CLUTTER_STAGE_VIEW (adaptor_data); - return capture_view (view); + return capture_view (view, TRUE); +} + +static cairo_surface_t * +view_adaptor_capture_undamaged (gpointer adaptor_data) +{ + ClutterStageView *view = CLUTTER_STAGE_VIEW (adaptor_data); + + return capture_view (view, FALSE); } static void @@ -214,6 +224,22 @@ meta_ref_test_verify_view (ClutterStageView *view, flags); } +void +meta_ref_test_verify_view_undamaged (ClutterStageView *view, + const char *test_name_unescaped, + int test_seq_no, + MetaReftestFlag flags) +{ + if (flags & META_REFTEST_FLAG_UPDATE_REF) + assert_software_rendered (view); + + meta_ref_test_verify (view_adaptor_capture_undamaged, + view, + test_name_unescaped, + test_seq_no, + flags); +} + MetaReftestFlag meta_ref_test_determine_ref_test_flag (void) { diff --git a/src/tests/meta-ref-test.h b/src/tests/meta-ref-test.h index 1ed86a281..c0f4d4ca5 100644 --- a/src/tests/meta-ref-test.h +++ b/src/tests/meta-ref-test.h @@ -29,5 +29,11 @@ void meta_ref_test_verify_view (ClutterStageView *view, int test_seq_no, MetaReftestFlag flags); +META_EXPORT +void meta_ref_test_verify_view_undamaged (ClutterStageView *view, + const char *test_name_unescaped, + int test_seq_no, + MetaReftestFlag flags); + META_EXPORT MetaReftestFlag meta_ref_test_determine_ref_test_flag (void);