tests/ref-test: Add API to capture without full damage

This can be useful to capture the screen content with broken damage.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4331>
This commit is contained in:
Jonas Ådahl
2025-03-12 12:29:31 +08:00
committed by Marge Bot
parent 1dcece298e
commit 22033acd68
2 changed files with 35 additions and 3 deletions

View File

@ -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)
{

View File

@ -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);