summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2018-07-17 17:24:17 +0200
committerDaniel Friesel <derf@finalrewind.org>2018-07-17 17:24:17 +0200
commit9de97b3aa26182a6f5d21a52c8e6f5952ae937c1 (patch)
treebf8d5bddcdfdd5e71d9754807edc312cc43fec0d /src
parent946c837a9fe78737020ae0d3a7f1b2e7201ae3ff (diff)
parent00d45a4d00f45ed378ec5b1f5ae002ca918e58be (diff)
Merge branch 'patch-1' of https://github.com/giladogit/feh into giladogit-patch-1
Diffstat (limited to 'src')
-rw-r--r--src/main.c8
-rw-r--r--src/signals.c4
-rw-r--r--src/signals.h2
3 files changed, 8 insertions, 6 deletions
diff --git a/src/main.c b/src/main.c
index f1fca24..99397fd 100644
--- a/src/main.c
+++ b/src/main.c
@@ -87,7 +87,7 @@ int main(int argc, char **argv)
/* main event loop */
while (feh_main_iteration(1));
- return(0);
+ return(sig_exit);
}
/* Return 0 to stop iterating, 1 if ok to continue. */
@@ -104,7 +104,7 @@ int feh_main_iteration(int block)
double t1 = 0.0, t2 = 0.0;
fehtimer ft;
- if (window_num == 0)
+ if (window_num == 0 || sig_exit != 0)
return(0);
if (first) {
@@ -137,7 +137,7 @@ int feh_main_iteration(int block)
if (ev_handler[ev.type])
(*(ev_handler[ev.type])) (&ev);
- if (window_num == 0)
+ if (window_num == 0 || sig_exit != 0)
return(0);
}
XFlush(disp);
@@ -208,7 +208,7 @@ int feh_main_iteration(int block)
feh_event_handle_stdin();
}
}
- if (window_num == 0)
+ if (window_num == 0 || sig_exit != 0)
return(0);
return(1);
diff --git a/src/signals.c b/src/signals.c
index c08d5df..262423b 100644
--- a/src/signals.c
+++ b/src/signals.c
@@ -28,11 +28,13 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "options.h"
void feh_handle_signal(int);
+int sig_exit;
void setup_signal_handlers()
{
struct sigaction feh_sh;
sigset_t feh_ss;
+ sig_exit = 0;
if (
(sigemptyset(&feh_ss) == -1) ||
(sigaddset(&feh_ss, SIGUSR1) == -1) ||
@@ -86,7 +88,7 @@ void feh_handle_signal(int signo)
case SIGQUIT:
if (childpid)
killpg(childpid, SIGINT);
- exit(128 + signo);
+ sig_exit = 128 + signo;
}
winwid = winwidget_get_first_window_of_type(WIN_TYPE_SLIDESHOW);
diff --git a/src/signals.h b/src/signals.h
index 526285d..090ab0b 100644
--- a/src/signals.h
+++ b/src/signals.h
@@ -27,5 +27,5 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define SIGNALS_H
void setup_signal_handlers();
-
+extern int sig_exit;
#endif