[Xfce4-commits] <xfwm4:xfce-4.8> Name the window manager when one is already running to help debugging sessions issues

Olivier Fourdan noreply at xfce.org
Sun Jan 8 12:12:02 CET 2012


Updating branch refs/heads/xfce-4.8
         to 30e7cb0fc8b51d9bfe08ce0c04f08f09889bef88 (commit)
       from 9c6463e5f9eb6f396d250554e10511774882485f (commit)

commit 30e7cb0fc8b51d9bfe08ce0c04f08f09889bef88
Author: Olivier Fourdan <fourdan at xfce.org>
Date:   Sun Jan 8 11:54:18 2012 +0100

    Name the window manager when one is already running to help debugging sessions issues

 src/main.c   |    2 +-
 src/screen.c |   13 +++++++++++++
 2 files changed, 14 insertions(+), 1 deletions(-)

diff --git a/src/main.c b/src/main.c
index e5fb24b..cf42e07 100644
--- a/src/main.c
+++ b/src/main.c
@@ -595,7 +595,7 @@ main (int argc, char **argv)
     switch (status)
     {
         case -1:
-            g_warning ("Another Window Manager is already running");
+            g_warning ("Could not find a screen to manage, exiting");
             exit (1);
             break;
         case -2:
diff --git a/src/screen.c b/src/screen.c
index a76ec0f..e629cb3 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -83,12 +83,25 @@ myScreenSetWMAtom (ScreenInfo *screen_info, gboolean replace_wm)
     g_snprintf (selection, sizeof (selection), "WM_S%d", screen_info->screen);
     wm_sn_atom = XInternAtom (display_info->dpy, selection, FALSE);
 
+    XSync (display_info->dpy, FALSE);
     current_wm = XGetSelectionOwner (display_info->dpy, wm_sn_atom);
     if (current_wm)
     {
         if (!replace_wm)
         {
+            const char *wm_name;
+            gchar *display_name;
+
+            display_name = gdk_screen_make_display_name (screen_info->gscr);
+            wm_name = gdk_x11_screen_get_window_manager_name (screen_info->gscr);
+            g_message ("Another Window Manager (%s) is already running on screen %s", wm_name, display_name);
             g_message ("To replace the current window manager, try \"--replace\"");
+            g_free (display_name);
+            /*
+             * Note: gdk_x11_screen_get_window_manager_name() returns a
+             * const not to be freed, no leak here...
+             */
+
             return FALSE;
         }
         gdk_error_trap_push ();


More information about the Xfce4-commits mailing list