diff options
Diffstat (limited to 'src/dillo.cc')
-rw-r--r-- | src/dillo.cc | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/dillo.cc b/src/dillo.cc index e9fbfdd7..e49dc1a3 100644 --- a/src/dillo.cc +++ b/src/dillo.cc @@ -2,6 +2,7 @@ * Dillo web browser * * Copyright 1999-2007 Jorge Arellano Cid <jcid@dillo.org> + * Copyright 2024 Rodrigo Arias Mallo <rodarima@gmail.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -65,6 +66,8 @@ #include "dw/textblock.hh" #include "dw/table.hh" +static volatile sig_atomic_t sig_reload = 0; + /** * Command line options structure */ @@ -145,6 +148,11 @@ static void raw_sigchld2(int signum) } } +static void handler_usr1(int signum) +{ + sig_reload = 1; +} + /** * Establish SIGCHLD handler */ @@ -161,6 +169,11 @@ static void est_sigchld(void) perror("sigaction"); exit(1); } + + if (signal(SIGUSR1, handler_usr1) == SIG_ERR) { + perror("signal failed"); + exit(1); + } } //---------------------------------------------------------------------------- @@ -580,7 +593,15 @@ int main(int argc, char **argv) } } - Fl::run(); + /* Don't use, as it can be free()'d */ + bw = NULL; + + while (Fl::wait() > 0) { + if (sig_reload) { + sig_reload = 0; + a_UIcmd_reload_all_active(); + } + } /* * Memory deallocating routines |