[Xfce4-commits] <xfwm4:master> Identify previous window manager and log its name.

Olivier Fourdan noreply at xfce.org
Tue Jan 10 08:04:01 CET 2012


Updating branch refs/heads/master
         to 6a50970d635aacbdd94e3e6cd01d62317f8315d5 (commit)
       from 058b3ce1e9c1572cc5f83b061ac677974d3c8c4a (commit)

commit 6a50970d635aacbdd94e3e6cd01d62317f8315d5
Author: Olivier Fourdan <fourdan at xfce.org>
Date:   Tue Jan 10 07:59:54 2012 +0100

    Identify previous window manager and log its name.

 src/screen.c |   26 ++++++++++++++------------
 1 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/src/screen.c b/src/screen.c
index 40485a0..09490fe 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -70,7 +70,9 @@ myScreenCheckWMAtom (ScreenInfo *screen_info, Atom atom)
 static gboolean
 myScreenSetWMAtom (ScreenInfo *screen_info, gboolean replace_wm)
 {
+    const char *wm_name;
     gchar selection[32];
+    gchar *display_name;
     gulong wait, timeout;
     DisplayInfo *display_info;
     XSetWindowAttributes attrs;
@@ -78,6 +80,7 @@ myScreenSetWMAtom (ScreenInfo *screen_info, gboolean replace_wm)
     XEvent event;
     Atom wm_sn_atom;
 
+
     g_return_val_if_fail (screen_info, FALSE);
     g_return_val_if_fail (screen_info->display_info, FALSE);
 
@@ -86,6 +89,8 @@ myScreenSetWMAtom (ScreenInfo *screen_info, gboolean replace_wm)
     display_info = screen_info->display_info;
     g_snprintf (selection, sizeof (selection), "WM_S%d", screen_info->screen);
     wm_sn_atom = XInternAtom (display_info->dpy, selection, FALSE);
+    display_name = gdk_screen_make_display_name (screen_info->gscr);
+    wm_name = gdk_x11_screen_get_window_manager_name (screen_info->gscr);
 
     XSync (display_info->dpy, FALSE);
     current_wm = XGetSelectionOwner (display_info->dpy, wm_sn_atom);
@@ -93,18 +98,9 @@ myScreenSetWMAtom (ScreenInfo *screen_info, gboolean replace_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;
         }
@@ -119,14 +115,16 @@ myScreenSetWMAtom (ScreenInfo *screen_info, gboolean replace_wm)
 
     if (!setXAtomManagerOwner (display_info, wm_sn_atom, screen_info->xroot, screen_info->xfwm4_win))
     {
-        g_warning ("Cannot acquire window manager selection on screen %d", screen_info->screen);
+        g_warning ("Cannot acquire window manager selection on screen %s", display_name);
+        g_free (display_name);
+
         return FALSE;
     }
 
     /* Waiting for previous window manager to exit */
     if (current_wm)
     {
-        g_print ("Waiting for current window manager on screen %d to exit", screen_info->screen);
+        g_print ("Waiting for current window manager (%s) on screen %s to exit:", wm_name, display_name);
         wait = 0;
         timeout = WM_EXITING_TIMEOUT * G_USEC_PER_SEC;
         while (wait < timeout)
@@ -146,11 +144,15 @@ myScreenSetWMAtom (ScreenInfo *screen_info, gboolean replace_wm)
         if (wait >= timeout)
         {
             g_print(" Failed\n");
-            g_warning("Previous window manager on screen %d is not exiting", screen_info->screen);
+            g_warning("Previous window manager (%s) on screen %s is not exiting", wm_name, display_name);
+            g_free (display_name);
+
             return FALSE;
         }
         g_print(" Done\n");
     }
+    g_free (display_name);
+
     return TRUE;
 }
 


More information about the Xfce4-commits mailing list