[mutter] tests/stage-view: Test timeline updates clock when parent moves
- From: Jonas Ådahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] tests/stage-view: Test timeline updates clock when parent moves
- Date: Thu, 13 Aug 2020 06:41:31 +0000 (UTC)
commit 9581e9e31bdec1b1f816a16ef23398baedf2183b
Author: Jonas Ådahl <jadahl gmail com>
Date: Wed Aug 12 19:32:54 2020 +0200
tests/stage-view: Test timeline updates clock when parent moves
Test that if a timeline got its frame clock from a parent of the
associated actor, if that actor moves across the stage so that the stage
views changes and thus the would be picked frame clock too, this is
noticed by the timeline so that it also changes to the correct frame
clock.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1404
src/tests/stage-view-tests.c | 77 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 77 insertions(+)
---
diff --git a/src/tests/stage-view-tests.c b/src/tests/stage-view-tests.c
index cff212d4ff..163d677ac8 100644
--- a/src/tests/stage-view-tests.c
+++ b/src/tests/stage-view-tests.c
@@ -898,6 +898,81 @@ meta_test_actor_stage_views_parent_views_rebuilt (void)
clutter_actor_destroy (container);
}
+static void
+meta_test_actor_stage_views_parent_views_changed (void)
+{
+ MetaBackend *backend = meta_get_backend ();
+ MetaMonitorManager *monitor_manager =
+ meta_backend_get_monitor_manager (backend);
+ MetaMonitorManagerTest *monitor_manager_test =
+ META_MONITOR_MANAGER_TEST (monitor_manager);
+ MonitorTestCaseSetup frame_clock_test_setup;
+ MetaMonitorTestSetup *test_setup;
+ ClutterActor *stage, *container, *test_actor;
+ GList *stage_views;
+ ClutterTimeline *timeline;
+ ClutterFrameClock *timeline_frame_clock;
+ ClutterFrameClock *first_view_frame_clock;
+ ClutterFrameClock *second_view_frame_clock;
+
+ stage = meta_backend_get_stage (backend);
+
+ frame_clock_test_setup = initial_test_case_setup;
+ test_setup = create_monitor_test_setup (&frame_clock_test_setup,
+ MONITOR_TEST_FLAG_NO_STORED);
+ meta_monitor_manager_test_emulate_hotplug (monitor_manager_test, test_setup);
+
+ stage_views = clutter_stage_peek_stage_views (CLUTTER_STAGE (stage));
+ g_assert_cmpint (g_list_length (stage_views), ==, 2);
+
+ container = clutter_actor_new ();
+ clutter_actor_set_size (container, 100, 100);
+ clutter_actor_set_position (container, 0, 0);
+ clutter_actor_add_child (stage, container);
+
+ test_actor = clutter_actor_new ();
+ clutter_actor_set_size (test_actor, 0, 0);
+ clutter_actor_add_child (container, test_actor);
+
+ stage_views = clutter_stage_peek_stage_views (CLUTTER_STAGE (stage));
+ g_assert_cmpint (g_list_length (stage_views), ==, 2);
+ clutter_actor_show (stage);
+ wait_for_paint (stage);
+ stage_views = clutter_stage_peek_stage_views (CLUTTER_STAGE (stage));
+ g_assert_cmpint (g_list_length (stage_views), ==, 2);
+
+ is_on_stage_views (test_actor, 0);
+ is_on_stage_views (container, 1, stage_views->data);
+ is_on_stage_views (stage, 2,
+ stage_views->data,
+ stage_views->next->data);
+
+ timeline = clutter_timeline_new_for_actor (test_actor, 100);
+ clutter_timeline_start (timeline);
+
+ first_view_frame_clock =
+ clutter_stage_view_get_frame_clock (stage_views->data);
+ second_view_frame_clock =
+ clutter_stage_view_get_frame_clock (stage_views->next->data);
+ g_assert_nonnull (first_view_frame_clock);
+ g_assert_nonnull (second_view_frame_clock);
+
+ timeline_frame_clock = clutter_timeline_get_frame_clock (timeline);
+
+ g_assert_nonnull (timeline_frame_clock);
+ g_assert (timeline_frame_clock == first_view_frame_clock);
+
+ clutter_actor_set_x (container, 1200);
+ wait_for_paint (stage);
+
+ timeline_frame_clock = clutter_timeline_get_frame_clock (timeline);
+ g_assert_nonnull (timeline_frame_clock);
+ g_assert (timeline_frame_clock == second_view_frame_clock);
+
+ clutter_actor_destroy (test_actor);
+ clutter_actor_destroy (container);
+}
+
static void
init_tests (int argc, char **argv)
{
@@ -921,6 +996,8 @@ init_tests (int argc, char **argv)
meta_test_actor_stage_views_timeline);
g_test_add_func ("/stage-views/actor-stage-views-parent-rebuilt",
meta_test_actor_stage_views_parent_views_rebuilt);
+ g_test_add_func ("/stage-views/actor-stage-views-parent-changed",
+ meta_test_actor_stage_views_parent_views_changed);
}
int
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]