diff options
author | Birte Kristina Friesel <derf@finalrewind.org> | 2023-10-02 04:15:59 +0200 |
---|---|---|
committer | Birte Kristina Friesel <derf@finalrewind.org> | 2023-10-02 04:16:23 +0200 |
commit | c73aab039e232e7b57ad7d8518c052ad5654d8bd (patch) | |
tree | 462d6692030471c643d578f9f2ad93ab43cb2c0f /src/signals.c | |
parent | 4d40380ebe111182341a0ac4214f962429e9c158 (diff) |
move signal-unsafe functions out of signal handlers
A signal interrupts the blocking function calls in the main iteration, so
there is really no need to do (unsafe) heavy lifting in the signal handler.
Closes #705
Diffstat (limited to 'src/signals.c')
-rw-r--r-- | src/signals.c | 22 |
1 files changed, 2 insertions, 20 deletions
diff --git a/src/signals.c b/src/signals.c index dc8786f..5a64883 100644 --- a/src/signals.c +++ b/src/signals.c @@ -29,6 +29,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "options.h" void feh_handle_signal(int); +volatile int sig_received = 0; volatile int sig_exit = 0; void setup_signal_handlers(void) @@ -71,9 +72,6 @@ void setup_signal_handlers(void) void feh_handle_signal(int signo) { - winwidget winwid; - int i; - switch (signo) { case SIGALRM: if (childpid) @@ -92,21 +90,5 @@ void feh_handle_signal(int signo) return; } - winwid = winwidget_get_first_window_of_type(WIN_TYPE_SLIDESHOW); - - if (winwid) { - if (filelist_len > 1) { - if (signo == SIGUSR1) - slideshow_change_image(winwid, SLIDE_NEXT, 1); - else if (signo == SIGUSR2) - slideshow_change_image(winwid, SLIDE_PREV, 1); - } else { - feh_reload_image(winwid, 0, 0); - } - } else if (opt.multiwindow) { - for (i = window_num - 1; i >= 0; i--) - feh_reload_image(windows[i], 0, 0); - } - - return; + sig_received = signo; } |