1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
From df48348452407c58e4681c23c91fc174efbf4fed Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <mdaenzer@redhat.com>
Date: Tue, 2 Dec 2025 16:57:14 +0100
Subject: [PATCH] x11: Trap X errors for a couple more XSendEvent calls
These may generate errors e.g. if the target window was destroyed.
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/4489
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4801>
---
src/x11/events.c | 2 ++
src/x11/meta-x11-selection.c | 3 +++
2 files changed, 5 insertions(+)
diff --git a/src/x11/events.c b/src/x11/events.c
index 4a9a43cbd..08c8a794e 100644
--- a/src/x11/events.c
+++ b/src/x11/events.c
@@ -1190,9 +1190,11 @@ process_selection_request (MetaX11Display *x11_display,
reply.property = event->xselectionrequest.property;
}
+ mtk_x11_error_trap_push (x11_display->xdisplay);
XSendEvent (x11_display->xdisplay,
event->xselectionrequest.requestor,
False, 0L, (XEvent*)&reply);
+ mtk_x11_error_trap_pop (x11_display->xdisplay);
meta_topic (META_DEBUG_X11, "Handled selection request");
}
diff --git a/src/x11/meta-x11-selection.c b/src/x11/meta-x11-selection.c
index 79592b854..0354cfe99 100644
--- a/src/x11/meta-x11-selection.c
+++ b/src/x11/meta-x11-selection.c
@@ -21,6 +21,7 @@
#include "core/meta-selection-private.h"
#include "meta/meta-selection-source-memory.h"
+#include "mtk/mtk-x11.h"
#include "x11/meta-selection-source-x11-private.h"
#include "x11/meta-x11-selection-output-stream-private.h"
#include "x11/meta-x11-selection-private.h"
@@ -136,8 +137,10 @@ send_selection_notify (MetaX11Display *x11_display,
event.target = request_event->target;
event.property = accepted ? request_event->property : None;
+ mtk_x11_error_trap_push (xdisplay);
XSendEvent (xdisplay, request_event->requestor,
False, NoEventMask, (XEvent *) &event);
+ mtk_x11_error_trap_pop (xdisplay);
}
static void
--
GitLab
|