diff --git a/clients/simple-egl.c b/clients/simple-egl.c index 13c33bd9..f6b6cf47 100644 --- a/clients/simple-egl.c +++ b/clients/simple-egl.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -307,9 +308,18 @@ event_mask_update(uint32_t mask, void *data) return 0; } +static int running = 1; + +static void +signal_int(int signum) +{ + running = 0; +} + int main(int argc, char **argv) { + struct sigaction sigint; struct display display = { 0 }; struct window window = { 0 }; @@ -333,10 +343,17 @@ main(int argc, char **argv) create_surface(&window); init_gl(&window); + sigint.sa_handler = signal_int; + sigemptyset(&sigint.sa_mask); + sigint.sa_flags = SA_RESETHAND; + sigaction(SIGINT, &sigint, NULL); + redraw(&window, NULL, 0); - while (true) + while (running) wl_display_iterate(display.display, display.mask); + fprintf(stderr, "simple-egl exiting\n"); + return 0; } diff --git a/clients/simple-shm.c b/clients/simple-shm.c index 8a760aea..19dab941 100644 --- a/clients/simple-shm.c +++ b/clients/simple-shm.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include @@ -208,19 +209,35 @@ create_display(void) return display; } +static int running = 1; + +static void +signal_int(int signum) +{ + running = 0; +} + int main(int argc, char **argv) { + struct sigaction sigint; struct display *display; struct window *window; display = create_display(); window = create_window(display, 250, 250); + sigint.sa_handler = signal_int; + sigemptyset(&sigint.sa_mask); + sigint.sa_flags = SA_RESETHAND; + sigaction(SIGINT, &sigint, NULL); + redraw(window, NULL, 0); - while (true) + while (running) wl_display_iterate(display->display, display->mask); + fprintf(stderr, "simple-shm exiting\n"); + return 0; }