This is an automated email from the git hooks/post-receive script.

olivier pushed a 
commit to branch 
xfce-4.14
in repository xfce/xfwm4.

commit 7da4e7c555c15e1496b39ddb2a825b82de54caca
Author: Olivier Fourdan <four...@xfce.org>
Date:   Mon Apr 13 14:24:27 2020 +0200

    device: Move error trap/push closer to X11 grabs
    
    As we already do an error trap/push with X11 core devices, do the same
    with Xi2 grabs and remove the check from the callers as it is not needed
    anymore.
    
    Signed-off-by: Olivier Fourdan <four...@xfce.org>
    (cherry picked from commit a1c712fe162890f30a04459468e80d206bfc9179)
---
 src/client.c |  2 --
 src/device.c | 29 +++++++++++++++++++++++++----
 src/focus.c  |  4 ----
 3 files changed, 25 insertions(+), 10 deletions(-)

diff --git a/src/client.c b/src/client.c
index 4286d77..0808e5a 100644
--- a/src/client.c
+++ b/src/client.c
@@ -341,10 +341,8 @@ clientUngrabButtons (Client *c)
 {
     g_return_if_fail (c != NULL);
     TRACE ("client \"%s\" (0x%lx)", c->name, c->window);
-    myDisplayErrorTrapPush (c->screen_info->display_info);
     xfwm_device_ungrab_button (c->screen_info->display_info->devices, 
clientGetXDisplay (c),
                                AnyButton, AnyModifier, c->window);
-    myDisplayErrorTrapPopIgnored (c->screen_info->display_info);
 }
 
 static gboolean
diff --git a/src/device.c b/src/device.c
index dc89b3f..d912d72 100644
--- a/src/device.c
+++ b/src/device.c
@@ -429,26 +429,35 @@ xfwm_device_grab_button (XfwmDevices *devices, Display 
*display,
         xi2_modifiers.status = 0;
 
         xfwm_device_fill_xi2_event_mask (&xievent_mask, event_mask);
+        myDisplayErrorTrapPush (display_info);
         status = XIGrabButton (display, devices->pointer.xi2_device, button, 
grab_window,
                                cursor, grab_mode, paired_device_mode, 
owner_events,
                                &xievent_mask, 1, &xi2_modifiers);
         g_free (xievent_mask.mask);
-        result = (status == XIGrabSuccess);
+        if (myDisplayErrorTrapPop (display_info) || status != XIGrabSuccess)
+        {
+            return FALSE;
+        }
     }
 #endif
 
-    return result;
+    return TRUE;
 }
 
 void
 xfwm_device_ungrab_button (XfwmDevices *devices, Display *display,
                            guint button, guint modifiers, Window grab_window)
 {
+    DisplayInfo *display_info;
 #ifdef HAVE_XI2
     XIGrabModifiers xi2_modifiers;
 #endif
 
+    display_info = myDisplayGetDefault ();
+    myDisplayErrorTrapPush (display_info);
+
     XUngrabButton (display, button, modifiers, grab_window);
+
 #ifdef HAVE_XI2
     if (devices->xi2_available)
     {
@@ -459,6 +468,8 @@ xfwm_device_ungrab_button (XfwmDevices *devices, Display 
*display,
                         grab_window, 1, &xi2_modifiers);
     }
 #endif
+
+    myDisplayErrorTrapPopIgnored (display_info);
 }
 
 gboolean
@@ -491,25 +502,33 @@ xfwm_device_grab_keycode (XfwmDevices *devices, Display 
*display,
         xi2_modifiers.status = 0;
 
         xfwm_device_fill_xi2_event_mask (&xievent_mask, event_mask);
+        myDisplayErrorTrapPush (display_info);
         status = XIGrabKeycode (display, devices->keyboard.xi2_device, 
keycode, grab_window,
                                 grab_mode, paired_device_mode, owner_events,
                                 &xievent_mask, 1, &xi2_modifiers);
         g_free (xievent_mask.mask);
-        result = (status == XIGrabSuccess);
+        if (myDisplayErrorTrapPop (display_info) || status != XIGrabSuccess)
+        {
+            return FALSE;
+        }
     }
 #endif
 
-    return result;
+    return TRUE;
 }
 
 void
 xfwm_device_ungrab_keycode (XfwmDevices *devices, Display *display,
                             gint keycode, guint modifiers, Window grab_window)
 {
+    DisplayInfo *display_info;
 #ifdef HAVE_XI2
     XIGrabModifiers xi2_modifiers;
 #endif
 
+    display_info = myDisplayGetDefault ();
+    myDisplayErrorTrapPush (display_info);
+
     XUngrabKey (display, keycode, modifiers, grab_window);
 
 #ifdef HAVE_XI2
@@ -522,6 +541,8 @@ xfwm_device_ungrab_keycode (XfwmDevices *devices, Display 
*display,
                          grab_window, 1, &xi2_modifiers);
     }
 #endif
+
+    myDisplayErrorTrapPopIgnored (display_info);
 }
 
 #ifdef HAVE_XI2
diff --git a/src/focus.c b/src/focus.c
index af05023..eb5b1b9 100644
--- a/src/focus.c
+++ b/src/focus.c
@@ -716,7 +716,6 @@ clientGrabMouseButton (Client * c)
     TRACE ("client \"%s\" (0x%lx)", c->name, c->window);
 
     screen_info = c->screen_info;
-    myDisplayErrorTrapPush (screen_info->display_info);
     if (screen_info->params->raise_with_any_button)
     {
         grabButton (screen_info->display_info->devices, clientGetXDisplay (c),
@@ -727,7 +726,6 @@ clientGrabMouseButton (Client * c)
         grabButton (screen_info->display_info->devices, clientGetXDisplay (c),
                     Button1, AnyModifier, c->window);
     }
-    myDisplayErrorTrapPopIgnored (screen_info->display_info);
 }
 
 void
@@ -736,12 +734,10 @@ clientUngrabMouseButton (Client * c)
     g_return_if_fail (c != NULL);
     TRACE ("client \"%s\" (0x%lx)", c->name, c->window);
 
-    myDisplayErrorTrapPush (c->screen_info->display_info);
     ungrabButton (c->screen_info->display_info->devices, clientGetXDisplay (c),
                   AnyButton, AnyModifier, c->window);
     /* We've ungrabbed way too much, so regrab the regular buttons/modifiers */
     clientGrabButtons (c);
-    myDisplayErrorTrapPopIgnored (c->screen_info->display_info);
 }
 
 void

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.
_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
https://mail.xfce.org/mailman/listinfo/xfce4-commits

Reply via email to