tests/wayland-test-driver: Add sync event

Will be used to signal test cases.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1993>
This commit is contained in:
Jonas Ådahl 2021-09-07 10:32:53 +02:00 committed by Marge Bot
parent a1d5c96e86
commit ed4e532690
3 changed files with 34 additions and 1 deletions

View File

@ -40,6 +40,8 @@ struct _MetaWaylandTestDriver
GObject parent;
struct wl_global *test_driver;
GList *resources;
};
G_DEFINE_TYPE (MetaWaylandTestDriver, meta_wayland_test_driver,
@ -97,6 +99,14 @@ static const struct test_driver_interface meta_test_driver_interface = {
sync_point,
};
static void
test_driver_destructor (struct wl_resource *resource)
{
MetaWaylandTestDriver *test_driver = wl_resource_get_user_data (resource);
test_driver->resources = g_list_remove (test_driver->resources, resource);
}
static void
bind_test_driver (struct wl_client *client,
void *user_data,
@ -109,7 +119,9 @@ bind_test_driver (struct wl_client *client,
resource = wl_resource_create (client, &test_driver_interface,
version, id);
wl_resource_set_implementation (resource, &meta_test_driver_interface,
test_driver, NULL);
test_driver, test_driver_destructor);
test_driver->resources = g_list_prepend (test_driver->resources, resource);
}
static void
@ -161,3 +173,17 @@ meta_wayland_test_driver_new (MetaWaylandCompositor *compositor)
return test_driver;
}
void
meta_wayland_test_driver_emit_sync_event (MetaWaylandTestDriver *test_driver,
uint32_t serial)
{
GList *l;
for (l = test_driver->resources; l; l = l->next)
{
struct wl_resource *resource = l->data;
test_driver_send_sync_event (resource, serial);
}
}

View File

@ -27,4 +27,7 @@ G_DECLARE_FINAL_TYPE (MetaWaylandTestDriver, meta_wayland_test_driver,
MetaWaylandTestDriver * meta_wayland_test_driver_new (MetaWaylandCompositor *compositor);
void meta_wayland_test_driver_emit_sync_event (MetaWaylandTestDriver *test_driver,
uint32_t serial);
#endif /* META_WAYLAND_TEST_DRIVER_H */

View File

@ -10,5 +10,9 @@
<arg name="sequence" type="uint"/>
<arg name="surface" type="object" interface="wl_surface" allow-null="true"/>
</request>
<event name="sync_event">
<arg name="sequence" type="uint"/>
</event>
</interface>
</protocol>