From: Matthew Mondor Date: Wed, 23 Aug 2023 13:24:40 +0000 (+0000) Subject: AnalogTerm2: Avoid direct screen_select_clear() in SIGALRM handler X-Git-Url: http://git.pulsar-zone.net/?a=commitdiff_plain;h=70a7a1a8c87d7c1393d1890660903b231c929c8b;p=mmondor.git AnalogTerm2: Avoid direct screen_select_clear() in SIGALRM handler --- diff --git a/mmsoftware/analogterm2/src/main.c b/mmsoftware/analogterm2/src/main.c index f0e6601..c188b57 100644 --- a/mmsoftware/analogterm2/src/main.c +++ b/mmsoftware/analogterm2/src/main.c @@ -114,6 +114,10 @@ x11_process(screen_t *screen, tty_t *ttys, state_t *state) draw_blink_update(); if (refresh_expired) draw_update_screen(screen, state); + if (screen_select_clear_now) { + screen_select_clear_now = false; + screen_select_clear(state); + } while (XPending(screen->dpy) > 0) { (void)XNextEvent(screen->dpy, &event); diff --git a/mmsoftware/analogterm2/src/screen.c b/mmsoftware/analogterm2/src/screen.c index a26cbea..5266c0b 100644 --- a/mmsoftware/analogterm2/src/screen.c +++ b/mmsoftware/analogterm2/src/screen.c @@ -143,6 +143,7 @@ static Atom atom_primary, atom_targets, atom_utf8_string, atom_string, atom_incr; int screen_select_ticks = 0; +bool screen_select_clear_now = false; screen_t * diff --git a/mmsoftware/analogterm2/src/screen.h b/mmsoftware/analogterm2/src/screen.h index ae22027..ab5d32d 100644 --- a/mmsoftware/analogterm2/src/screen.h +++ b/mmsoftware/analogterm2/src/screen.h @@ -82,6 +82,7 @@ void screen_select_notify(state_t *, XSelectionEvent *); extern int screen_select_ticks; +extern bool screen_select_clear_now; #endif diff --git a/mmsoftware/analogterm2/src/timer.c b/mmsoftware/analogterm2/src/timer.c index d417048..9d9a499 100644 --- a/mmsoftware/analogterm2/src/timer.c +++ b/mmsoftware/analogterm2/src/timer.c @@ -116,6 +116,6 @@ alarm_sighandler(int sig) /* Clipboard selection timeout */ if (screen_select_ticks > 0) { if (--screen_select_ticks == 0) - screen_select_clear(state); + screen_select_clear_now = true; } }