This request simulates device creation/destruction from evdev (libinput)

Signed-off-by: Marek Chalupa <[email protected]>
---
 protocol/weston-test.xml |  6 ++++++
 tests/weston-test.c      | 37 +++++++++++++++++++++++++++++++++++++
 2 files changed, 43 insertions(+)

diff --git a/protocol/weston-test.xml b/protocol/weston-test.xml
index 17c7565..538d668 100644
--- a/protocol/weston-test.xml
+++ b/protocol/weston-test.xml
@@ -56,6 +56,12 @@
       <arg name="key" type="uint"/>
       <arg name="state" type="uint"/>
     </request>
+    <request name="device_release">
+      <arg name="device" type="string"/>
+    </request>
+    <request name="device_add">
+      <arg name="device" type="string"/>
+    </request>
     <event name="pointer_position">
       <arg name="x" type="fixed"/>
       <arg name="y" type="fixed"/>
diff --git a/tests/weston-test.c b/tests/weston-test.c
index 649bdda..0144392 100644
--- a/tests/weston-test.c
+++ b/tests/weston-test.c
@@ -26,6 +26,7 @@
 #include <assert.h>
 #include <signal.h>
 #include <unistd.h>
+#include <string.h>
 
 #include "../src/compositor.h"
 #include "weston-test-server-protocol.h"
@@ -195,6 +196,40 @@ send_key(struct wl_client *client, struct wl_resource 
*resource,
        notify_key(seat, 100, key, state, STATE_UPDATE_AUTOMATIC);
 }
 
+static void
+device_release(struct wl_client *client,
+              struct wl_resource *resource, const char *device)
+{
+       struct weston_test *test = wl_resource_get_user_data(resource);
+       struct weston_seat *seat = get_seat(test);
+
+       if (strcmp(device, "pointer") == 0) {
+               weston_seat_release_pointer(seat);
+       } else if (strcmp(device, "keyboard") == 0) {
+               weston_seat_release_keyboard(seat);
+       } else if (strcmp(device, "seat") == 0) {
+               weston_seat_release(seat);
+       } else {
+               assert(0 && "Unsupported device");
+       }
+}
+
+static void
+device_add(struct wl_client *client,
+          struct wl_resource *resource, const char *device)
+{
+       struct weston_test *test = wl_resource_get_user_data(resource);
+       struct weston_seat *seat = get_seat(test);
+
+       if (strcmp(device, "pointer") == 0) {
+               weston_seat_init_pointer(seat);
+       } else if (strcmp(device, "keyboard") == 0) {
+               weston_seat_init_keyboard(seat, NULL);
+       } else {
+               assert(0 && "Unsupported device");
+       }
+}
+
 #ifdef ENABLE_EGL
 static int
 is_egl_buffer(struct wl_resource *resource)
@@ -242,6 +277,8 @@ static const struct weston_test_interface 
test_implementation = {
        send_button,
        activate_surface,
        send_key,
+       device_release,
+       device_add,
        get_n_buffers,
 };
 
-- 
2.1.0

_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to