]> Dogcows Code - chaz/openbox/blobdiff - openbox/openbox.c
move the focus_order lists into the kernel
[chaz/openbox] / openbox / openbox.c
index 7a0cfbb9e39a5db6c448210f41536c29d2347c65..9f90a9e01e729e7a2a1d2e149c75ac2819ae5946 100644 (file)
@@ -1,22 +1,20 @@
 #include "openbox.h"
 #include "event.h"
 #include "client.h"
+#include "dispatch.h"
 #include "xerror.h"
 #include "prop.h"
 #include "screen.h"
 #include "focus.h"
 #include "extensions.h"
 #include "gettext.h"
-#include "keyboard.h"
-#include "pointer.h"
+#include "grab.h"
 #include "engine.h"
-#include "python.h"
-#include "hooks.h"
-#include "clientwrap.h"
-#include "openboxwrap.h"
 #include "themerc.h"
+#include "plugin.h"
 #include "timer.h"
 #include "../render/render.h"
+#include "../render/font.h"
 
 #ifdef HAVE_FCNTL_H
 #  include <fcntl.h>
@@ -51,7 +49,7 @@ gboolean ob_remote   = FALSE;
 gboolean ob_sync     = TRUE;
 Cursors  ob_cursors;
 
-void signal_handler(int signal);
+void signal_handler(const ObEvent *e, void *data);
 
 int main(int argc, char **argv)
 {
@@ -67,9 +65,13 @@ int main(int argc, char **argv)
     bind_textdomain_codeset(PACKAGE, "UTF-8");
     textdomain(PACKAGE);
 
+    /* start our event dispatcher and register for signals */
+    dispatch_startup();
+    dispatch_register(Event_Signal, signal_handler, NULL);
+
     /* set up signal handler */
     sigemptyset(&sigset);
-    action.sa_handler = signal_handler;
+    action.sa_handler = dispatch_signal;
     action.sa_mask = sigset;
     action.sa_flags = SA_NOCLDSTOP | SA_NODEFER;
     sigaction(SIGUSR1, &action, (struct sigaction *) NULL);
@@ -132,22 +134,17 @@ int main(int argc, char **argv)
        font_startup();
        themerc_startup();
        engine_startup(themerc_engine);
-       python_startup();
-       openboxwrap_startup();
-       clientwrap_startup();
-       hooks_startup();
        event_startup();
        screen_startup();
        focus_startup();
        client_startup();
-       keyboard_startup();
-       pointer_startup();
-         
-       /* load the user's settings */
-       if (!python_import("rc"))
-           g_warning("ERROR LOADING RC FILE");
+        grab_startup();
+        plugin_startup();
 
-       HOOKFIRE(startup, "()");
+        /* XXX load all plugins!! */
+        plugin_open("focus");
+        plugin_open("keyboard");
+        plugin_open("mouse");
 
        /* get all the existing windows */
        client_manage_all();
@@ -160,33 +157,33 @@ int main(int argc, char **argv)
 
        client_unmanage_all();
 
-       HOOKFIRE(shutdown, "()");
-
-       pointer_shutdown();
-       keyboard_shutdown();
+        plugin_shutdown(); /* calls all the plugins' shutdown functions */
+        grab_shutdown();
        client_shutdown();
+       focus_shutdown();
        screen_shutdown();
        event_shutdown();
-       hooks_shutdown();
-       clientwrap_shutdown();
-       openboxwrap_shutdown();
-       python_shutdown();
        engine_shutdown();
        themerc_shutdown();
        render_shutdown();
        timer_shutdown();
     }
-         
+
     XCloseDisplay(ob_display);
 
+    dispatch_shutdown();
+
     /* XXX if (ob_restart) */
      
     return 0;
 }
 
-void signal_handler(int signal)
+void signal_handler(const ObEvent *e, void *data)
 {
-    switch (signal) {
+    int s;
+
+    s = e->data.s.signal;
+    switch (s) {
     case SIGUSR1:
        g_message("Caught SIGUSR1 signal. Restarting.");
        ob_shutdown = ob_restart = TRUE;
@@ -200,12 +197,12 @@ void signal_handler(int signal)
     case SIGINT:
     case SIGTERM:
     case SIGPIPE:
-       g_message("Caught signal %d. Exiting.", signal);
+       g_message("Caught signal %d. Exiting.", s);
        ob_shutdown = TRUE;
        break;
 
     case SIGFPE:
     case SIGSEGV:
-       g_error("Caught signal %d. Aborting and dumping core.", signal);
+       g_error("Caught signal %d. Aborting and dumping core.", s);
     }
 }
This page took 0.022982 seconds and 4 git commands to generate.