diff options
| author | Dana Jansens <danakj@orodu.net> | 2007-05-28 20:03:57 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2007-05-28 20:03:57 +0000 |
| commit | b30380700fed5636523bc67a24268c200431fdc4 (patch) | |
| tree | e9eb0c16ff0c4691c602ec2d439cd708a885f00f /openbox/screen.c | |
| parent | 34bdcb2569868ac482467dda4e0bf165d5fbfd11 (diff) | |
tell the ksplash screen we've started up, through the dcop command line program, if it's around
Diffstat (limited to 'openbox/screen.c')
| -rw-r--r-- | openbox/screen.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/openbox/screen.c b/openbox/screen.c index e5a9af3b..f515e4ec 100644 --- a/openbox/screen.c +++ b/openbox/screen.c @@ -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; |
