From 56bba3a7f2fb8e8b5ec9dbc7700eeb6fc6413e6f Mon Sep 17 00:00:00 2001
From: Olivier Fourdan <fourdan.olivier@wanadoo.fr>
Date: Mon, 10 Jun 2002 12:21:18 +0000
Subject: [PATCH] Grab server when framing/unframing all clients at
 startup/exit

(Old svn revision: 10361)
---
 src/client.c | 8 +++++++-
 src/hints.c  | 2 +-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/client.c b/src/client.c
index 218413278..8e29268f8 100644
--- a/src/client.c
+++ b/src/client.c
@@ -1665,15 +1665,18 @@ void clientFrameAll()
     windows_stack = NULL;
     client_focus = NULL;
 
+    XSync (dpy, 0);
+    MyXGrabServer(dpy);
     XQueryTree(dpy, root, &w1, &w2, &wins, &count);
     for(i = 0; i < count; i++)
     {
         XGetWindowAttributes(dpy, wins[i], &attr);
-        if(!(attr.override_redirect) && (attr.map_state == IsViewable))
+        if((!(attr.override_redirect)) && (attr.map_state == IsViewable))
         {
             clientFrame(wins[i]);
         }
     }
+    MyXUngrabServer(dpy);
     if(wins)
     {
         XFree(wins);
@@ -1688,6 +1691,8 @@ void clientUnframeAll()
 
     DBG("entering clientUnframeAll\n");
 
+    XSync (dpy, 0);
+    MyXGrabServer(dpy);
     XQueryTree(dpy, root, &w1, &w2, &wins, &count);
     for(i = 0; i < count; i++)
     {
@@ -1697,6 +1702,7 @@ void clientUnframeAll()
             clientUnframe(c, True);
         }
     }
+    MyXUngrabServer(dpy);
     if(wins)
     {
         XFree(wins);
diff --git a/src/hints.c b/src/hints.c
index 895f0de65..abb55ec0b 100644
--- a/src/hints.c
+++ b/src/hints.c
@@ -132,7 +132,7 @@ unsigned long getWMState(Display * dpy, Window w)
 
     DBG("entering getWmState\n");
 
-    if((XGetWindowProperty(dpy, w, wm_state, 0, 2L, False, wm_state, &real_type, &real_format, &items_read, &items_left, (unsigned char **)&data) == Success) && (items_read))
+    if((XGetWindowProperty(dpy, w, wm_state, 0, 3L, False, wm_state, &real_type, &real_format, &items_read, &items_left, (unsigned char **)&data) == Success) && (items_read))
     {
 	state = *data;
 	XFree(data);
-- 
GitLab