From 152405b8f91df9efacca8395e6a630de995e78e7 Mon Sep 17 00:00:00 2001 From: Emmanuel Gil Peyrot Date: Thu, 14 Oct 2021 11:43:46 +0200 Subject: [PATCH] simple-touch: Exit on xdg_toplevel::close This makes it possible to close this client without using a terminal, especially useful on a phone. Signed-off-by: Emmanuel Gil Peyrot --- clients/simple-touch.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/clients/simple-touch.c b/clients/simple-touch.c index 15f5c912..7c9ada64 100644 --- a/clients/simple-touch.c +++ b/clients/simple-touch.c @@ -63,9 +63,10 @@ struct touch { struct xdg_surface *xdg_surface; struct xdg_toplevel *xdg_toplevel; struct buffer *buffer; - bool has_argb; int width, height; + bool running; bool wait_for_configure; + bool has_argb; }; static struct buffer * @@ -349,6 +350,8 @@ handle_toplevel_configure(void *data, struct xdg_toplevel *xdg_toplevel, static void handle_toplevel_close(void *data, struct xdg_toplevel *xdg_toplevel) { + struct touch *touch = data; + touch->running = false; } static const struct xdg_toplevel_listener xdg_toplevel_listener = { @@ -404,6 +407,8 @@ touch_create(int width, int height) touch->wait_for_configure = true; wl_surface_commit(touch->surface); + touch->running = true; + return touch; } @@ -438,7 +443,7 @@ main(int argc, char **argv) touch = touch_create(600, 500); - while (ret != -1) + while (ret != -1 && touch->running) ret = wl_display_dispatch(touch->display); destroy_touch(touch);