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:
@ -146,7 +146,8 @@ on_after_paint (MetaStage *stage,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static cairo_surface_t *
|
static cairo_surface_t *
|
||||||
capture_view (ClutterStageView *stage_view)
|
capture_view (ClutterStageView *stage_view,
|
||||||
|
gboolean queue_damage)
|
||||||
{
|
{
|
||||||
MetaRendererView *view = META_RENDERER_VIEW (stage_view);
|
MetaRendererView *view = META_RENDERER_VIEW (stage_view);
|
||||||
MetaCrtc *crtc = meta_renderer_view_get_crtc (view);
|
MetaCrtc *crtc = meta_renderer_view_get_crtc (view);
|
||||||
@ -165,7 +166,8 @@ capture_view (ClutterStageView *stage_view)
|
|||||||
META_STAGE_WATCH_AFTER_PAINT,
|
META_STAGE_WATCH_AFTER_PAINT,
|
||||||
on_after_paint,
|
on_after_paint,
|
||||||
&data);
|
&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);
|
clutter_stage_view_schedule_update (stage_view);
|
||||||
|
|
||||||
g_main_loop_run (data.loop);
|
g_main_loop_run (data.loop);
|
||||||
@ -185,7 +187,15 @@ view_adaptor_capture (gpointer adaptor_data)
|
|||||||
{
|
{
|
||||||
ClutterStageView *view = CLUTTER_STAGE_VIEW (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
|
static void
|
||||||
@ -214,6 +224,22 @@ meta_ref_test_verify_view (ClutterStageView *view,
|
|||||||
flags);
|
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
|
MetaReftestFlag
|
||||||
meta_ref_test_determine_ref_test_flag (void)
|
meta_ref_test_determine_ref_test_flag (void)
|
||||||
{
|
{
|
||||||
|
@ -29,5 +29,11 @@ void meta_ref_test_verify_view (ClutterStageView *view,
|
|||||||
int test_seq_no,
|
int test_seq_no,
|
||||||
MetaReftestFlag flags);
|
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
|
META_EXPORT
|
||||||
MetaReftestFlag meta_ref_test_determine_ref_test_flag (void);
|
MetaReftestFlag meta_ref_test_determine_ref_test_flag (void);
|
||||||
|
Reference in New Issue
Block a user