aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Sibiller <uli42@gmx.de>2021-06-18 00:06:57 +0200
committerUlrich Sibiller <uli42@gmx.de>2021-06-21 22:23:46 +0200
commit5e017044f69ffb821be678964764a4bfb19afe8b (patch)
tree40c2146a3bc2491d17a805684b28ab23ab4b79cb
parent423caaf0ff8826449734a04dc9038b552e6c15e5 (diff)
downloadnx-libs-5e017044f69ffb821be678964764a4bfb19afe8b.tar.gz
nx-libs-5e017044f69ffb821be678964764a4bfb19afe8b.tar.bz2
nx-libs-5e017044f69ffb821be678964764a4bfb19afe8b.zip
Clipboard.c: do not process requests if we do not have a local owner
This can happen after having processed a SelectionClear event while the real X server still knows the nxagent serverWindow as the selection owner.
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Clipboard.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c b/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c
index c200ad64c..018827a0a 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Clipboard.c
@@ -995,6 +995,15 @@ void nxagentHandleSelectionRequestFromXServer(XEvent *X)
return;
}
+ if (!IS_LOCAL_OWNER(index))
+ {
+ #ifdef DEBUG
+ fprintf(stderr, "%s: no local owner for selection [%ld] - denying request.\n", __func__, X->xselectionrequest.selection);
+ #endif
+ replyRequestSelectionToXServer(X, False);
+ return;
+ }
+
#ifdef DEBUG
fprintf(stderr, "%s: lastServers[%d].requestor [0x%lx].\n", __func__, index, lastServers[index].requestor);
#endif