diff options
| -rw-r--r-- | mate-screenshot/src/mate-screenshot.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/mate-screenshot/src/mate-screenshot.c b/mate-screenshot/src/mate-screenshot.c index b652f79a..df203a88 100644 --- a/mate-screenshot/src/mate-screenshot.c +++ b/mate-screenshot/src/mate-screenshot.c @@ -32,6 +32,8 @@ #include <unistd.h> #include <stdlib.h> #include <errno.h> +#include <signal.h> +#include <glib-unix.h> #ifdef ENABLE_NLS #include <locale.h> #endif /* ENABLE_NLS */ @@ -1270,6 +1272,14 @@ loop_dialog_screenshot (void) gtk_main (); } +static gboolean +signal_handler (gpointer data) +{ + /* exit cleanly on signals to allow cleaning up temporary files */ + gtk_main_quit (); + return FALSE; +} + /* main */ int main (int argc, char *argv[]) @@ -1363,6 +1373,9 @@ main (int argc, char *argv[]) if (delay_arg > 0) delay = delay_arg; + g_unix_signal_add (SIGINT, signal_handler, NULL); + g_unix_signal_add (SIGTERM, signal_handler, NULL); + loop_dialog_screenshot(); return EXIT_SUCCESS; |
