diff options
| author | Zach DeCook <zachdecook@librem.one> | 2024-01-14 14:27:51 -0500 |
|---|---|---|
| committer | Zach DeCook <zachdecook@librem.one> | 2024-01-14 14:27:51 -0500 |
| commit | 180159140fd84b11fdfeecd3f95b21a696f2b9a2 (patch) | |
| tree | 21ad5bb4e8ffe30c7eafc7c352b756afd6964bfc /main.c | |
| parent | 8e6949d8a667852f38c14038cd87feb1ffb440a2 (diff) | |
| download | suggpicker-180159140fd84b11fdfeecd3f95b21a696f2b9a2.tar.gz | |
hide/show/toggle: fix a few crashes (still broken)
Diffstat (limited to 'main.c')
| -rw-r--r-- | main.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/main.c b/main.c index e18b092..124dddb 100644 --- a/main.c +++ b/main.c @@ -339,6 +339,7 @@ usage(char *argv0) { void hide(int sigint) { + if(keyboard.debug) fprintf(stderr, "hiding keyboard\n"); signal(SIGUSR1, hide); if (!layer_surface) { return; @@ -348,10 +349,13 @@ hide(int sigint) { wl_surface_destroy(draw_surf.surf); layer_surface = NULL; hidden = true; + // dispatch to make it disappear + wl_display_dispatch(display); } void show(int sigint) { + if(keyboard.debug) fprintf(stderr, "showing keyboard\n"); signal(SIGUSR2, show); if (layer_surface) { return; @@ -375,9 +379,12 @@ show(int sigint) { wl_display_roundtrip(display); drwsurf_flip(&draw_surf); hidden = false; + // Dispatch so that bar appears (and can take events). + wl_display_dispatch(display); } void toggle_visibility(int sigint) { + if(keyboard.debug) fprintf(stderr, "toggling visibility\n"); signal(SIGRTMIN, toggle_visibility); if (hidden) { show(sigint); @@ -442,11 +449,6 @@ main(int argc, char **argv) { } else if ((!strcmp(argv[i], "-h")) || (!strcmp(argv[i], "--help"))) { usage(argv[0]); exit(0); - } else if (!strcmp(argv[i], "-l")) { - if (i >= argc - 1) { - usage(argv[0]); - exit(1); - } } else if (!strcmp(argv[i], "-H")) { if (i >= argc - 1) { usage(argv[0]); @@ -520,8 +522,6 @@ main(int argc, char **argv) { fds[0].events = POLLIN; fds[1].fd = wl_display_get_fd(display); fds[1].events = POLLIN; - // Initial dispatch so that bar appears (and can take events). - wl_display_dispatch(display); while (run_display) { while(layer_surface && poll(fds, 2, -1) != -1) { if (fds[0].revents & POLLIN) { @@ -532,7 +532,9 @@ main(int argc, char **argv) { } wl_display_flush(display); } - wl_display_roundtrip(display); + if (layer_surface){ + wl_display_roundtrip(display); + } while (run_display && !layer_surface) { // Hidden sleep(1); |
