diff --git a/src/tests/meta-wayland-test-driver.c b/src/tests/meta-wayland-test-driver.c
index c0a64ce22..149e336af 100644
--- a/src/tests/meta-wayland-test-driver.c
+++ b/src/tests/meta-wayland-test-driver.c
@@ -338,6 +338,12 @@ bind_test_driver (struct wl_client *client,
key,
g_variant_get_string (variant, NULL));
}
+ else if (g_variant_is_of_type (value, G_VARIANT_TYPE_INT32))
+ {
+ test_driver_send_property_int (resource,
+ key,
+ g_variant_get_int32 (variant));
+ }
else
{
g_autofree char *variant_string = NULL;
@@ -436,6 +442,16 @@ meta_wayland_test_driver_set_property (MetaWaylandTestDriver *test_driver,
g_variant_new_string (value));
}
+void
+meta_wayland_test_driver_set_property_int (MetaWaylandTestDriver *test_driver,
+ const char *name,
+ int32_t value)
+{
+ g_hash_table_replace (test_driver->properties,
+ g_strdup (name),
+ g_variant_new_int32 (value));
+}
+
static void
on_sync_point (MetaWaylandTestDriver *test_driver,
unsigned int sequence,
diff --git a/src/tests/meta-wayland-test-driver.h b/src/tests/meta-wayland-test-driver.h
index 852e91c7b..1c9616769 100644
--- a/src/tests/meta-wayland-test-driver.h
+++ b/src/tests/meta-wayland-test-driver.h
@@ -33,5 +33,9 @@ void meta_wayland_test_driver_set_property (MetaWaylandTestDriver *test_driver,
const char *name,
const char *value);
+void meta_wayland_test_driver_set_property_int (MetaWaylandTestDriver *test_driver,
+ const char *name,
+ int32_t value);
+
void meta_wayland_test_driver_wait_for_sync_point (MetaWaylandTestDriver *test_driver,
unsigned int sync_point);
diff --git a/src/tests/protocol/test-driver.xml b/src/tests/protocol/test-driver.xml
index fd51e1400..de347560c 100644
--- a/src/tests/protocol/test-driver.xml
+++ b/src/tests/protocol/test-driver.xml
@@ -50,5 +50,10 @@
+
+
+
+
+
diff --git a/src/tests/wayland-test-clients/wayland-test-client-utils.c b/src/tests/wayland-test-clients/wayland-test-client-utils.c
index f981b68c0..d02413860 100644
--- a/src/tests/wayland-test-clients/wayland-test-client-utils.c
+++ b/src/tests/wayland-test-clients/wayland-test-client-utils.c
@@ -247,9 +247,23 @@ test_driver_handle_property (void *user_data,
g_variant_new_string (value));
}
+static void
+test_driver_handle_property_int (void *user_data,
+ struct test_driver *test_driver,
+ const char *name,
+ const uint32_t value)
+{
+ WaylandDisplay *display = WAYLAND_DISPLAY (user_data);
+
+ g_hash_table_replace (display->properties,
+ g_strdup (name),
+ g_variant_new_int32 (value));
+}
+
static const struct test_driver_listener test_driver_listener = {
test_driver_handle_sync_event,
test_driver_handle_property,
+ test_driver_handle_property_int,
};
static void
@@ -705,6 +719,17 @@ lookup_property_string (WaylandDisplay *display,
return value;
}
+int32_t
+lookup_property_int (WaylandDisplay *display,
+ const char *name)
+{
+ GVariant *variant;
+
+ variant = g_hash_table_lookup (display->properties, name);
+ g_return_val_if_fail (variant, -1);
+ return g_variant_get_int32 (variant);
+}
+
static void
effects_completed (void *data,
struct wl_callback *callback,
diff --git a/src/tests/wayland-test-clients/wayland-test-client-utils.h b/src/tests/wayland-test-clients/wayland-test-client-utils.h
index 537922db1..f4faccc7e 100644
--- a/src/tests/wayland-test-clients/wayland-test-client-utils.h
+++ b/src/tests/wayland-test-clients/wayland-test-client-utils.h
@@ -127,6 +127,9 @@ void draw_surface (WaylandDisplay *display,
const char * lookup_property_string (WaylandDisplay *display,
const char *name);
+int32_t lookup_property_int (WaylandDisplay *display,
+ const char *name);
+
void wait_for_effects_completed (WaylandDisplay *display,
struct wl_surface *surface);