mirror of
https://gitlab.freedesktop.org/wayland/weston.git
synced 2026-05-04 23:27:58 +02:00
weston-test: add device_{release/add} into protocol
This request simulates device creation/destruction from evdev (libinput)
v2: added support for touch. Touch is not supported yet,
but better be prepared
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
This commit is contained in:
parent
a8e9b41578
commit
c8daf77f91
2 changed files with 47 additions and 0 deletions
|
|
@ -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"/>
|
||||
|
|
|
|||
|
|
@ -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,44 @@ 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, "touch") == 0) {
|
||||
weston_seat_release_touch(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 if (strcmp(device, "touch") == 0) {
|
||||
weston_seat_init_touch(seat);
|
||||
} else {
|
||||
assert(0 && "Unsupported device");
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef ENABLE_EGL
|
||||
static int
|
||||
is_egl_buffer(struct wl_resource *resource)
|
||||
|
|
@ -242,6 +281,8 @@ static const struct weston_test_interface test_implementation = {
|
|||
send_button,
|
||||
activate_surface,
|
||||
send_key,
|
||||
device_release,
|
||||
device_add,
|
||||
get_n_buffers,
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue