Add SIGUSR1 to restart the window manager
| Author | Mitja Felicijan <mitja.felicijan@gmail.com> | 2026-01-25 01:26:21 +0100 |
| Committer | Mitja Felicijan <mitja.felicijan@gmail.com> | 2026-01-25 01:26:21 +0100 |
| Commit | b1b86d7e54e037a83850eb45df801b29b0ea1fbf (patch) |
|
-rw-r--r-- |
main.c | 12 |
1 files changed, 12 insertions, 0 deletions
| diff --git a/main.c b/main.c | |||
| 1 | #include <pthread.h> |
1 | #include <pthread.h> |
| 2 | #include <signal.h> |
||
| 2 | #include <unistd.h> |
3 | #include <unistd.h> |
| 3 | 4 | ||
| 4 | #include "glitch.h" |
5 | #include "glitch.h" |
| 5 | 6 | ||
| 6 | WindowManager wm = {0}; |
7 | WindowManager wm = {0}; |
| 8 | |||
| 9 | void handle_signal(int signal) { |
||
| 10 | wm.running = 0; |
||
| 11 | wm.restart = 1; |
||
| 12 | printf("running: %d\n", wm.running); |
||
| 13 | log_message(stderr, LOG_DEBUG, "Signal received: %d", signal); |
||
| 14 | } |
||
| 7 | 15 | ||
| 8 | static void* expose_timer_thread(void* arg) { |
16 | static void* expose_timer_thread(void* arg) { |
| 9 | (void)arg; |
17 | (void)arg; |
| ... | |||
| 48 | } else { |
56 | } else { |
| 49 | pthread_detach(timer_tid); |
57 | pthread_detach(timer_tid); |
| 50 | } |
58 | } |
| 59 | |||
| 60 | // SIGUSR1 is used for restarting the window manager. |
||
| 61 | // kill -s SIGUSR1 $(pidof glitch) |
||
| 62 | signal(SIGUSR1, handle_signal); |
||
| 51 | 63 | ||
| 52 | wm.running = 1; |
64 | wm.running = 1; |
| 53 | while(wm.running) { |
65 | while(wm.running) { |
| ... | |||