]> Dogcows Code - chaz/openbox/commitdiff
tell the ksplash screen we've started up, through the dcop command line program,...
authorDana Jansens <danakj@orodu.net>
Mon, 28 May 2007 20:03:57 +0000 (20:03 +0000)
committerDana Jansens <danakj@orodu.net>
Mon, 28 May 2007 20:03:57 +0000 (20:03 +0000)
openbox/screen.c

index e5a9af3b809c86d642b5134c0519cfbde2b5e41c..f515e4ec2181b9a953e17bdae6db5749ec38c810 100644 (file)
@@ -52,6 +52,7 @@
 
 static gboolean screen_validate_layout(ObDesktopLayout *l);
 static gboolean replace_wm();
+static void     screen_tell_ksplash();
 
 guint    screen_num_desktops;
 guint    screen_num_monitors;
@@ -302,9 +303,36 @@ gboolean screen_annex()
                 net_supported, atom, supported, num_support);
     g_free(supported);
 
+    screen_tell_ksplash();
+
     return TRUE;
 }
 
+static void screen_tell_ksplash()
+{
+    XEvent e;
+    const char *args[] = { "dcop", "ksplash", "ksplash",
+                           "upAndRunning(QString)", "wm started", NULL };
+
+    /* tell the dcop server through the command line interface */
+    g_spawn_async(NULL, args, NULL,
+                  G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
+                  NULL, NULL, NULL, NULL);
+
+    /* i'm not sure why we do this, kwin does it, but ksplash doesn't seem to
+       hear it anyways. perhaps it is for old ksplash. or new ksplash. or
+       something. oh well. */
+    e.xclient.type = ClientMessage;
+    e.xclient.display = ob_display;
+    e.xclient.window = RootWindow(ob_display, ob_screen);
+    e.xclient.message_type =
+        XInternAtom(ob_display, "_KDE_SPLASH_PROGRESS", False );
+    e.xclient.format = 8;
+    strcpy(e.xclient.data.b, "wm started");
+    XSendEvent(ob_display, RootWindow(ob_display, ob_screen),
+               False, SubstructureNotifyMask, &e );
+}
+
 void screen_startup(gboolean reconfig)
 {
     gchar **names = NULL;
This page took 0.024792 seconds and 4 git commands to generate.