mirror of
https://github.com/brl/mutter.git
synced 2024-11-30 03:50:47 -05:00
tests/backend-test: Wait for stage update in add and remove_device
We put a DEVICE_ADDED or DEVICE_REMOVED event into Clutters event queue here, so we should also wait for Clutter to process events once. Just putting an event into the queue doesn't mean it gets processed immediately (especially when the commit after this one is applied), so wait for a stage update here. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2697>
This commit is contained in:
parent
9a5289cf58
commit
0d0a6ece32
@ -85,6 +85,14 @@ meta_backend_test_create_color_manager (MetaBackend *backend)
|
|||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
on_after_update (ClutterStage *stage,
|
||||||
|
ClutterStageView *view,
|
||||||
|
gboolean *was_updated)
|
||||||
|
{
|
||||||
|
*was_updated = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
ClutterInputDevice *
|
ClutterInputDevice *
|
||||||
meta_backend_test_add_test_device (MetaBackendTest *backend_test,
|
meta_backend_test_add_test_device (MetaBackendTest *backend_test,
|
||||||
const char *name,
|
const char *name,
|
||||||
@ -100,6 +108,10 @@ meta_backend_test_add_test_device (MetaBackendTest *backend_test,
|
|||||||
ClutterEvent *event;
|
ClutterEvent *event;
|
||||||
const char *product_id;
|
const char *product_id;
|
||||||
bool has_cursor = TRUE;
|
bool has_cursor = TRUE;
|
||||||
|
gboolean was_updated = FALSE;
|
||||||
|
|
||||||
|
g_signal_connect (stage, "after-update", G_CALLBACK (on_after_update),
|
||||||
|
&was_updated);
|
||||||
|
|
||||||
switch (device_type)
|
switch (device_type)
|
||||||
{
|
{
|
||||||
@ -161,6 +173,11 @@ meta_backend_test_add_test_device (MetaBackendTest *backend_test,
|
|||||||
clutter_event_put (event);
|
clutter_event_put (event);
|
||||||
clutter_event_free (event);
|
clutter_event_free (event);
|
||||||
|
|
||||||
|
while (!was_updated)
|
||||||
|
g_main_context_iteration (NULL, TRUE);
|
||||||
|
|
||||||
|
g_signal_handlers_disconnect_by_func (stage, on_after_update, &was_updated);
|
||||||
|
|
||||||
return device;
|
return device;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -171,12 +188,21 @@ meta_backend_test_remove_device (MetaBackendTest *backend_test,
|
|||||||
MetaBackend *backend = META_BACKEND (backend_test);
|
MetaBackend *backend = META_BACKEND (backend_test);
|
||||||
ClutterStage *stage = CLUTTER_STAGE (meta_backend_get_stage (backend));
|
ClutterStage *stage = CLUTTER_STAGE (meta_backend_get_stage (backend));
|
||||||
ClutterEvent *event;
|
ClutterEvent *event;
|
||||||
|
gboolean was_updated = FALSE;
|
||||||
|
|
||||||
|
g_signal_connect (stage, "after-update", G_CALLBACK (on_after_update),
|
||||||
|
&was_updated);
|
||||||
|
|
||||||
event = clutter_event_new (CLUTTER_DEVICE_REMOVED);
|
event = clutter_event_new (CLUTTER_DEVICE_REMOVED);
|
||||||
clutter_event_set_device (event, device);
|
clutter_event_set_device (event, device);
|
||||||
clutter_event_set_stage (event, stage);
|
clutter_event_set_stage (event, stage);
|
||||||
clutter_event_put (event);
|
clutter_event_put (event);
|
||||||
clutter_event_free (event);
|
clutter_event_free (event);
|
||||||
|
|
||||||
|
while (!was_updated)
|
||||||
|
g_main_context_iteration (NULL, TRUE);
|
||||||
|
|
||||||
|
g_signal_handlers_disconnect_by_func (stage, on_after_update, &was_updated);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -3956,23 +3956,6 @@ meta_sensors_proxy_reset (MetaSensorsProxyMock *proxy)
|
|||||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (MetaSensorsProxyAutoResetMock,
|
G_DEFINE_AUTOPTR_CLEANUP_FUNC (MetaSensorsProxyAutoResetMock,
|
||||||
meta_sensors_proxy_reset)
|
meta_sensors_proxy_reset)
|
||||||
|
|
||||||
static ClutterInputDevice *
|
|
||||||
meta_test_add_touch_device (MetaBackend * backend)
|
|
||||||
{
|
|
||||||
MetaBackendTest *backend_test = META_BACKEND_TEST (backend);
|
|
||||||
ClutterInputDevice *device;
|
|
||||||
|
|
||||||
device = meta_backend_test_add_test_device (backend_test, "test-touchscreen",
|
|
||||||
CLUTTER_TOUCHSCREEN_DEVICE, 1);
|
|
||||||
|
|
||||||
g_assert_true (CLUTTER_IS_INPUT_DEVICE (device));
|
|
||||||
g_assert_cmpuint (clutter_input_device_get_device_type (device),
|
|
||||||
==,
|
|
||||||
CLUTTER_TOUCHSCREEN_DEVICE);
|
|
||||||
|
|
||||||
return device;
|
|
||||||
}
|
|
||||||
|
|
||||||
typedef ClutterInputDevice ClutterAutoRemoveInputDevice;
|
typedef ClutterInputDevice ClutterAutoRemoveInputDevice;
|
||||||
static void
|
static void
|
||||||
input_device_test_remove (ClutterAutoRemoveInputDevice *device)
|
input_device_test_remove (ClutterAutoRemoveInputDevice *device)
|
||||||
@ -4102,10 +4085,10 @@ meta_test_monitor_orientation_is_managed (void)
|
|||||||
g_assert_nonnull (meta_monitor_manager_get_laptop_panel (monitor_manager));
|
g_assert_nonnull (meta_monitor_manager_get_laptop_panel (monitor_manager));
|
||||||
|
|
||||||
g_assert_false (clutter_seat_get_touch_mode (seat));
|
g_assert_false (clutter_seat_get_touch_mode (seat));
|
||||||
touch_device = meta_test_add_touch_device (backend);
|
touch_device =
|
||||||
|
meta_backend_test_add_test_device (META_BACKEND_TEST (backend),
|
||||||
while (!clutter_seat_get_touch_mode (seat))
|
"test-touchscreen",
|
||||||
g_main_context_iteration (NULL, FALSE);
|
CLUTTER_TOUCHSCREEN_DEVICE, 1);
|
||||||
|
|
||||||
g_assert_true (clutter_seat_get_touch_mode (seat));
|
g_assert_true (clutter_seat_get_touch_mode (seat));
|
||||||
g_assert_false (
|
g_assert_false (
|
||||||
@ -4167,17 +4150,14 @@ meta_test_monitor_orientation_is_managed (void)
|
|||||||
meta_backend_test_remove_device (META_BACKEND_TEST (backend), touch_device);
|
meta_backend_test_remove_device (META_BACKEND_TEST (backend), touch_device);
|
||||||
g_clear_object (&touch_device);
|
g_clear_object (&touch_device);
|
||||||
|
|
||||||
while (clutter_seat_get_touch_mode (seat))
|
|
||||||
g_main_context_iteration (NULL, FALSE);
|
|
||||||
|
|
||||||
g_assert_false (clutter_seat_get_touch_mode (seat));
|
g_assert_false (clutter_seat_get_touch_mode (seat));
|
||||||
g_assert_false (
|
g_assert_false (
|
||||||
meta_monitor_manager_get_panel_orientation_managed (monitor_manager));
|
meta_monitor_manager_get_panel_orientation_managed (monitor_manager));
|
||||||
|
|
||||||
touch_device = meta_test_add_touch_device (backend);
|
touch_device =
|
||||||
|
meta_backend_test_add_test_device (META_BACKEND_TEST (backend),
|
||||||
while (!clutter_seat_get_touch_mode (seat))
|
"test-touchscreen",
|
||||||
g_main_context_iteration (NULL, FALSE);
|
CLUTTER_TOUCHSCREEN_DEVICE, 1);
|
||||||
|
|
||||||
g_assert_true (clutter_seat_get_touch_mode (seat));
|
g_assert_true (clutter_seat_get_touch_mode (seat));
|
||||||
g_assert_true (
|
g_assert_true (
|
||||||
@ -4277,7 +4257,10 @@ meta_test_monitor_orientation_initial_rotated (void)
|
|||||||
|
|
||||||
g_test_message ("%s", G_STRFUNC);
|
g_test_message ("%s", G_STRFUNC);
|
||||||
orientation_mock = meta_sensors_proxy_mock_get ();
|
orientation_mock = meta_sensors_proxy_mock_get ();
|
||||||
touch_device = meta_test_add_touch_device (backend);
|
touch_device =
|
||||||
|
meta_backend_test_add_test_device (META_BACKEND_TEST (backend),
|
||||||
|
"test-touchscreen",
|
||||||
|
CLUTTER_TOUCHSCREEN_DEVICE, 1);
|
||||||
orientation = META_ORIENTATION_LEFT_UP;
|
orientation = META_ORIENTATION_LEFT_UP;
|
||||||
meta_sensors_proxy_mock_set_orientation (orientation_mock, orientation);
|
meta_sensors_proxy_mock_set_orientation (orientation_mock, orientation);
|
||||||
meta_wait_for_orientation (orientation_manager, orientation,
|
meta_wait_for_orientation (orientation_manager, orientation,
|
||||||
@ -4498,7 +4481,10 @@ meta_test_monitor_orientation_initial_stored_rotated (void)
|
|||||||
|
|
||||||
g_test_message ("%s", G_STRFUNC);
|
g_test_message ("%s", G_STRFUNC);
|
||||||
orientation_mock = meta_sensors_proxy_mock_get ();
|
orientation_mock = meta_sensors_proxy_mock_get ();
|
||||||
touch_device = meta_test_add_touch_device (backend);
|
touch_device =
|
||||||
|
meta_backend_test_add_test_device (META_BACKEND_TEST (backend),
|
||||||
|
"test-touchscreen",
|
||||||
|
CLUTTER_TOUCHSCREEN_DEVICE, 1);
|
||||||
orientation = META_ORIENTATION_RIGHT_UP;
|
orientation = META_ORIENTATION_RIGHT_UP;
|
||||||
meta_sensors_proxy_mock_set_orientation (orientation_mock, orientation);
|
meta_sensors_proxy_mock_set_orientation (orientation_mock, orientation);
|
||||||
meta_wait_for_orientation (orientation_manager, orientation,
|
meta_wait_for_orientation (orientation_manager, orientation,
|
||||||
@ -4779,7 +4765,10 @@ meta_test_monitor_orientation_changes (void)
|
|||||||
|
|
||||||
g_test_message ("%s", G_STRFUNC);
|
g_test_message ("%s", G_STRFUNC);
|
||||||
orientation_mock = meta_sensors_proxy_mock_get ();
|
orientation_mock = meta_sensors_proxy_mock_get ();
|
||||||
touch_device = meta_test_add_touch_device (backend);
|
touch_device =
|
||||||
|
meta_backend_test_add_test_device (META_BACKEND_TEST (backend),
|
||||||
|
"test-touchscreen",
|
||||||
|
CLUTTER_TOUCHSCREEN_DEVICE, 1);
|
||||||
test_setup = meta_create_monitor_test_setup (test_backend,
|
test_setup = meta_create_monitor_test_setup (test_backend,
|
||||||
&test_case.setup,
|
&test_case.setup,
|
||||||
MONITOR_TEST_FLAG_NO_STORED);
|
MONITOR_TEST_FLAG_NO_STORED);
|
||||||
@ -4976,7 +4965,10 @@ meta_test_monitor_orientation_changes_for_transformed_panel (void)
|
|||||||
|
|
||||||
g_test_message ("%s", G_STRFUNC);
|
g_test_message ("%s", G_STRFUNC);
|
||||||
orientation_mock = meta_sensors_proxy_mock_get ();
|
orientation_mock = meta_sensors_proxy_mock_get ();
|
||||||
touch_device = meta_test_add_touch_device (backend);
|
touch_device =
|
||||||
|
meta_backend_test_add_test_device (META_BACKEND_TEST (backend),
|
||||||
|
"test-touchscreen",
|
||||||
|
CLUTTER_TOUCHSCREEN_DEVICE, 1);
|
||||||
test_setup = meta_create_monitor_test_setup (test_backend,
|
test_setup = meta_create_monitor_test_setup (test_backend,
|
||||||
&test_case.setup,
|
&test_case.setup,
|
||||||
MONITOR_TEST_FLAG_NO_STORED);
|
MONITOR_TEST_FLAG_NO_STORED);
|
||||||
@ -5075,7 +5067,10 @@ meta_test_monitor_orientation_changes_for_transformed_panel (void)
|
|||||||
==,
|
==,
|
||||||
META_ORIENTATION_NORMAL);
|
META_ORIENTATION_NORMAL);
|
||||||
|
|
||||||
meta_test_add_touch_device (backend);
|
touch_device =
|
||||||
|
meta_backend_test_add_test_device (META_BACKEND_TEST (backend),
|
||||||
|
"test-touchscreen",
|
||||||
|
CLUTTER_TOUCHSCREEN_DEVICE, 1);
|
||||||
got_monitors_changed = FALSE;
|
got_monitors_changed = FALSE;
|
||||||
meta_sensors_proxy_mock_set_orientation (orientation_mock,
|
meta_sensors_proxy_mock_set_orientation (orientation_mock,
|
||||||
META_ORIENTATION_RIGHT_UP);
|
META_ORIENTATION_RIGHT_UP);
|
||||||
@ -5230,7 +5225,10 @@ meta_test_monitor_orientation_changes_with_hotplugging (void)
|
|||||||
|
|
||||||
g_test_message ("%s", G_STRFUNC);
|
g_test_message ("%s", G_STRFUNC);
|
||||||
orientation_mock = meta_sensors_proxy_mock_get ();
|
orientation_mock = meta_sensors_proxy_mock_get ();
|
||||||
touch_device = meta_test_add_touch_device (backend);
|
touch_device =
|
||||||
|
meta_backend_test_add_test_device (META_BACKEND_TEST (backend),
|
||||||
|
"test-touchscreen",
|
||||||
|
CLUTTER_TOUCHSCREEN_DEVICE, 1);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The first part of this test emulate the following:
|
* The first part of this test emulate the following:
|
||||||
|
Loading…
Reference in New Issue
Block a user