summaryrefslogtreecommitdiff
path: root/openbox/openbox.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2010-06-27 12:02:44 -0400
committerMikael Magnusson <mikachu@gmail.com>2010-09-16 17:24:11 +0200
commit1666d285d744173e03c585dd6525219732ba313a (patch)
treecba6085a3b060ed2e3cc7ea62c31ca5ce8c64b7c /openbox/openbox.c
parentb79b70620fbf4b73534d964bfbf647e268ece404 (diff)
Add signal handling with the GMainLoop
Provided through a very simplistic interface in obt, found in the obt/signal.[ch] files
Diffstat (limited to 'openbox/openbox.c')
-rw-r--r--openbox/openbox.c29
1 files changed, 18 insertions, 11 deletions
diff --git a/openbox/openbox.c b/openbox/openbox.c
index b2cdc8ef..ae0ba8ae 100644
--- a/openbox/openbox.c
+++ b/openbox/openbox.c
@@ -47,6 +47,7 @@
#include "obrender/theme.h"
#include "obt/display.h"
#include "obt/xqueue.h"
+#include "obt/signal.h"
#include "obt/prop.h"
#include "obt/keyboard.h"
#include "obt/xml.h"
@@ -117,6 +118,8 @@ gint main(gint argc, gchar **argv)
{
gchar *program_name;
+ obt_signal_listen();
+
ob_set_state(OB_STATE_STARTING);
ob_debug_startup();
@@ -160,16 +163,17 @@ gint main(gint argc, gchar **argv)
ob_main_loop = g_main_loop_new(NULL, FALSE);
- /* set up signal handler */
-// obt_main_loop_signal_add(ob_main_loop, SIGUSR1, signal_handler, NULL,NULL);
-// obt_main_loop_signal_add(ob_main_loop, SIGUSR2, signal_handler, NULL,NULL);
-// obt_main_loop_signal_add(ob_main_loop, SIGTERM, signal_handler, NULL,NULL);
-// obt_main_loop_signal_add(ob_main_loop, SIGINT, signal_handler, NULL,NULL);
-// obt_main_loop_signal_add(ob_main_loop, SIGHUP, signal_handler, NULL,NULL);
-// obt_main_loop_signal_add(ob_main_loop, SIGPIPE, signal_handler, NULL,NULL);
-// obt_main_loop_signal_add(ob_main_loop, SIGCHLD, signal_handler, NULL,NULL);
-// obt_main_loop_signal_add(ob_main_loop, SIGTTIN, signal_handler, NULL,NULL);
-// obt_main_loop_signal_add(ob_main_loop, SIGTTOU, signal_handler, NULL,NULL);
+ /* set up signal handlers, they are called from the mainloop
+ in the main program's thread */
+ obt_signal_add_callback(SIGUSR1, signal_handler, NULL);
+ obt_signal_add_callback(SIGUSR2, signal_handler, NULL);
+ obt_signal_add_callback(SIGTERM, signal_handler, NULL);
+ obt_signal_add_callback(SIGINT, signal_handler, NULL);
+ obt_signal_add_callback(SIGHUP, signal_handler, NULL);
+ obt_signal_add_callback(SIGPIPE, signal_handler, NULL);
+ obt_signal_add_callback(SIGCHLD, signal_handler, NULL);
+ obt_signal_add_callback(SIGTTIN, signal_handler, NULL);
+ obt_signal_add_callback(SIGTTOU, signal_handler, NULL);
ob_screen = DefaultScreen(obt_display);
@@ -420,6 +424,7 @@ gint main(gint argc, gchar **argv)
if (restart) {
ob_debug_shutdown();
+ obt_signal_stop();
if (restart_path != NULL) {
gint argcp;
gchar **argvp;
@@ -473,8 +478,10 @@ gint main(gint argc, gchar **argv)
g_free(ob_sm_id);
g_free(program_name);
- if (!restart)
+ if (!restart) {
ob_debug_shutdown();
+ obt_signal_stop();
+ }
return exitcode;
}