[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 629ac0803f: Fix crash on some compositing managers
From: |
Po Lu |
Subject: |
master 629ac0803f: Fix crash on some compositing managers |
Date: |
Sat, 19 Mar 2022 23:26:03 -0400 (EDT) |
branch: master
commit 629ac0803f29dcc9b5be5f704c0892b121f6adf5
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>
Fix crash on some compositing managers
* src/xterm.c (x_dnd_get_target_window): Catch errors around
CompositeReleaseOverlayWindow.
---
src/xterm.c | 25 ++++++++++++++++---------
1 file changed, 16 insertions(+), 9 deletions(-)
diff --git a/src/xterm.c b/src/xterm.c
index 3e888407b3..3e7b51e4db 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -911,27 +911,34 @@ x_dnd_get_target_window (struct x_display_info *dpyinfo,
if (XGetSelectionOwner (dpyinfo->display,
dpyinfo->Xatom_NET_WM_CM_Sn) != None)
{
+ x_catch_errors (dpyinfo->display);
overlay_window = XCompositeGetOverlayWindow (dpyinfo->display,
dpyinfo->root_window);
XCompositeReleaseOverlayWindow (dpyinfo->display,
dpyinfo->root_window);
- XGetWindowAttributes (dpyinfo->display, overlay_window, &attrs);
-
- if (attrs.map_state == IsViewable)
+ if (!x_had_errors_p (dpyinfo->display))
{
- proxy = x_dnd_get_window_proxy (dpyinfo, overlay_window);
+ XGetWindowAttributes (dpyinfo->display, overlay_window, &attrs);
- if (proxy != None)
+ if (attrs.map_state == IsViewable)
{
- proto = x_dnd_get_window_proto (dpyinfo, proxy);
+ proxy = x_dnd_get_window_proxy (dpyinfo, overlay_window);
- if (proto != -1)
+ if (proxy != None)
{
- *proto_out = proto;
- return proxy;
+ proto = x_dnd_get_window_proto (dpyinfo, proxy);
+
+ if (proto != -1)
+ {
+ *proto_out = proto;
+ x_uncatch_errors_after_check ();
+
+ return proxy;
+ }
}
}
}
+ x_uncatch_errors_after_check ();
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 629ac0803f: Fix crash on some compositing managers,
Po Lu <=