tests/conform: Use the clutter stage from mutter

The tests created their own stage, which caused various issues. Lets use
the one from mutter instead.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1289
This commit is contained in:
Jonas Ådahl 2020-05-29 19:31:22 +02:00 committed by Georges Basile Stavracas Neto
parent 01609de587
commit 007d27fa40
5 changed files with 23 additions and 20 deletions

View File

@ -5,8 +5,6 @@
#include <clutter/clutter.h> #include <clutter/clutter.h>
typedef struct { typedef struct {
ClutterActor *stage;
guint no_display : 1; guint no_display : 1;
} ClutterTestEnvironment; } ClutterTestEnvironment;
@ -98,18 +96,9 @@ out:
ClutterActor * ClutterActor *
clutter_test_get_stage (void) clutter_test_get_stage (void)
{ {
g_assert (test_environ != NULL); MetaBackend *backend = meta_get_backend ();
if (test_environ->stage == NULL) return meta_backend_get_stage (backend);
{
/* create a stage, and ensure that it goes away at the end */
test_environ->stage = clutter_stage_new ();
clutter_actor_set_name (test_environ->stage, "Test Stage");
g_object_add_weak_pointer (G_OBJECT (test_environ->stage),
(gpointer *) &test_environ->stage);
}
return test_environ->stage;
} }
typedef struct { typedef struct {
@ -122,11 +111,13 @@ static void
clutter_test_func_wrapper (gconstpointer data_) clutter_test_func_wrapper (gconstpointer data_)
{ {
const ClutterTestData *data = data_; const ClutterTestData *data = data_;
ClutterActor *stage;
g_test_log_set_fatal_handler (log_func, NULL); g_test_log_set_fatal_handler (log_func, NULL);
/* ensure that the previous test state has been cleaned up */ /* ensure that the previous test state has been cleaned up */
g_assert_null (test_environ->stage); stage = clutter_test_get_stage ();
g_assert_false (clutter_actor_is_mapped (stage));
if (test_environ->no_display) if (test_environ->no_display)
{ {
@ -151,11 +142,8 @@ out:
if (data->test_notify != NULL) if (data->test_notify != NULL)
data->test_notify (data->test_data); data->test_notify (data->test_data);
if (test_environ->stage != NULL) clutter_actor_remove_all_children (stage);
{ clutter_actor_hide (stage);
clutter_actor_destroy (test_environ->stage);
g_assert_null (test_environ->stage);
}
} }
/** /**

View File

@ -260,7 +260,7 @@ actor_shader_effect (void)
if (!clutter_feature_available (CLUTTER_FEATURE_SHADERS_GLSL)) if (!clutter_feature_available (CLUTTER_FEATURE_SHADERS_GLSL))
return; return;
stage = clutter_stage_new (); stage = clutter_test_get_stage ();
rect = make_actor (foo_old_shader_effect_get_type ()); rect = make_actor (foo_old_shader_effect_get_type ());
clutter_container_add_actor (CLUTTER_CONTAINER (stage), rect); clutter_container_add_actor (CLUTTER_CONTAINER (stage), rect);

View File

@ -132,8 +132,11 @@ completed_cb (ClutterTimeline *timeline,
static void static void
timeline_interpolation (void) timeline_interpolation (void)
{ {
ClutterActor *stage;
TestState state; TestState state;
stage = clutter_test_get_stage ();
state.timeline = state.timeline =
clutter_timeline_new (TEST_TIMELINE_DURATION); clutter_timeline_new (TEST_TIMELINE_DURATION);
clutter_timeline_set_repeat_count (state.timeline, -1); clutter_timeline_set_repeat_count (state.timeline, -1);
@ -151,6 +154,8 @@ timeline_interpolation (void)
state.passed = TRUE; state.passed = TRUE;
state.expected_frame = 0; state.expected_frame = 0;
clutter_actor_show (stage);
state.start_time = g_get_real_time (); state.start_time = g_get_real_time ();
clutter_timeline_start (state.timeline); clutter_timeline_start (state.timeline);

View File

@ -70,8 +70,11 @@ new_frame_cb (ClutterTimeline *timeline,
static void static void
timeline_rewind (void) timeline_rewind (void)
{ {
ClutterActor *stage;
TestState state; TestState state;
stage = clutter_test_get_stage ();
state.timeline = state.timeline =
clutter_timeline_new (TEST_TIMELINE_DURATION); clutter_timeline_new (TEST_TIMELINE_DURATION);
g_signal_connect (G_OBJECT(state.timeline), g_signal_connect (G_OBJECT(state.timeline),
@ -85,6 +88,8 @@ timeline_rewind (void)
&state); &state);
state.rewind_count = 0; state.rewind_count = 0;
clutter_actor_show (stage);
clutter_timeline_start (state.timeline); clutter_timeline_start (state.timeline);
clutter_main(); clutter_main();

View File

@ -184,6 +184,7 @@ delay_cb (gpointer data)
static void static void
timeline_base (void) timeline_base (void)
{ {
ClutterActor *stage;
ClutterTimeline *timeline_1; ClutterTimeline *timeline_1;
TimelineData data_1; TimelineData data_1;
ClutterTimeline *timeline_2; ClutterTimeline *timeline_2;
@ -194,6 +195,8 @@ timeline_base (void)
gsize n_markers; gsize n_markers;
guint delay_tag; guint delay_tag;
stage = clutter_test_get_stage ();
timeline_data_init (&data_1, 1); timeline_data_init (&data_1, 1);
timeline_1 = clutter_timeline_new (FRAME_COUNT * 1000 / FPS); timeline_1 = clutter_timeline_new (FRAME_COUNT * 1000 / FPS);
clutter_timeline_add_marker_at_time (timeline_1, "start-marker", clutter_timeline_add_marker_at_time (timeline_1, "start-marker",
@ -263,6 +266,8 @@ timeline_base (void)
"completed", G_CALLBACK (timeline_complete_cb), "completed", G_CALLBACK (timeline_complete_cb),
&data_3); &data_3);
clutter_actor_show (stage);
if (!g_test_quiet ()) if (!g_test_quiet ())
g_print ("Without delay...\n"); g_print ("Without delay...\n");