]> Dogcows Code - chaz/openbox/blobdiff - openbox/openbox.c
add RECT_CONTAINS
[chaz/openbox] / openbox / openbox.c
index fd4973da4514dbb17a6245a10d6a142a4f3a91b6..017eb184115bdd3231634269fcdd34380811f8c5 100644 (file)
@@ -35,6 +35,9 @@
 #ifdef HAVE_LOCALE_H
 #  include <locale.h>
 #endif
+#ifdef HAVE_UNISTD_H
+#  include <unistd.h>
+#endif
 
 #include <X11/cursorfont.h>
 
@@ -150,9 +153,8 @@ int main(int argc, char **argv)
        client_manage_all();
 
        ob_state = State_Running;
-       while (!ob_shutdown) {
+       while (!ob_shutdown)
            event_loop();
-       }
        ob_state = State_Exiting;
 
        client_unmanage_all();
@@ -160,6 +162,7 @@ int main(int argc, char **argv)
         plugin_shutdown(); /* calls all the plugins' shutdown functions */
         grab_shutdown();
        client_shutdown();
+       focus_shutdown();
        screen_shutdown();
        event_shutdown();
        engine_shutdown();
@@ -167,12 +170,32 @@ int main(int argc, char **argv)
        render_shutdown();
        timer_shutdown();
     }
-         
-    XCloseDisplay(ob_display);
 
     dispatch_shutdown();
 
-    /* XXX if (ob_restart) */
+    XCloseDisplay(ob_display);
+
+    if (ob_restart) {
+        ob_restart_path = "";
+        if (ob_restart_path != NULL) {
+            int argcp;
+            char **argvp;
+            GError *err = NULL;
+
+            /* run other shit */
+            if (g_shell_parse_argv(ob_restart_path, &argcp, &argvp, &err)) {
+                execvp(argvp[0], argvp);
+                g_strfreev(argvp);
+            } else {
+                g_warning("failed to execute '%s': %s", ob_restart_path,
+                          err->message);
+            }
+        }
+
+        /* re-run me */
+        execvp(argv[0], argv); /* try how we were run */
+        execlp("ob3", "ob3", NULL); /* try this as a last resort */
+    }
      
     return 0;
 }
This page took 0.021685 seconds and 4 git commands to generate.