On Fri, 26 Jan 2018 18:48:00 +0200 Alexandros Frantzis <alexandros.frant...@collabora.com> wrote:
> Support adding a test seat using the weston_test.device_add request. > This will be used in tests in upcoming commits where we will need to > re-add the seat after having it removed. > > We only support one test seat at the moment, so this commit also > introduces checks to ensure the client doesn't try to create multiple > test seats or try to remove an already removed test seat. > > Signed-off-by: Alexandros Frantzis <alexandros.frant...@collabora.com> > --- > tests/weston-test.c | 32 +++++++++++++++++++++++++------- > 1 file changed, 25 insertions(+), 7 deletions(-) > > diff --git a/tests/weston-test.c b/tests/weston-test.c > index 80b3d65b..9a2fd286 100644 > --- a/tests/weston-test.c > +++ b/tests/weston-test.c > @@ -50,6 +50,7 @@ struct weston_test { > struct weston_layer layer; > struct weston_process process; > struct weston_seat seat; > + bool is_seat_initialized; > }; > > struct weston_test_surface { > @@ -76,6 +77,22 @@ test_client_sigchld(struct weston_process *process, int > status) > wl_display_terminate(test->compositor->wl_display); > } > > +static int > +test_seat_init(struct weston_test *test) > +{ > + /* create our own seat */ > + weston_seat_init(&test->seat, test->compositor, "test-seat"); > + test->is_seat_initialized = true; > + > + /* add devices */ > + weston_seat_init_pointer(&test->seat); > + if (weston_seat_init_keyboard(&test->seat, NULL) < 0) > + return -1; > + weston_seat_init_touch(&test->seat); > + > + return 0; > +} > + > static struct weston_seat * > get_seat(struct weston_test *test) > { > @@ -253,7 +270,10 @@ device_release(struct wl_client *client, > } else if (strcmp(device, "touch") == 0) { > weston_seat_release_touch(seat); > } else if (strcmp(device, "seat") == 0) { > + assert(test->is_seat_initialized && > + "Trying to release already released test seat"); > weston_seat_release(seat); > + test->is_seat_initialized = false; > } else { > assert(0 && "Unsupported device"); > } > @@ -272,6 +292,10 @@ device_add(struct wl_client *client, > weston_seat_init_keyboard(seat, NULL); > } else if (strcmp(device, "touch") == 0) { > weston_seat_init_touch(seat); > + } else if (strcmp(device, "seat") == 0) { > + assert(!test->is_seat_initialized && > + "Trying to add already added test seat"); > + test_seat_init(test); > } else { > assert(0 && "Unsupported device"); > } > @@ -611,14 +635,8 @@ wet_module_init(struct weston_compositor *ec, > test, bind_test) == NULL) > return -1; > > - /* create our own seat */ > - weston_seat_init(&test->seat, ec, "test-seat"); > - > - /* add devices */ > - weston_seat_init_pointer(&test->seat); > - if (weston_seat_init_keyboard(&test->seat, NULL) < 0) > + if (test_seat_init(test) == -1) > return -1; > - weston_seat_init_touch(&test->seat); > > loop = wl_display_get_event_loop(ec->wl_display); > wl_event_loop_add_idle(loop, idle_launch_client, test); Looks good. Reviewed-by: Pekka Paalanen <pekka.paala...@collabora.co.uk> Thanks, pq
pgp25AUlDqIWB.pgp
Description: OpenPGP digital signature
_______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/wayland-devel