aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/programs/Xserver
diff options
context:
space:
mode:
authorUlrich Sibiller <uli42@gmx.de>2024-06-29 19:13:03 +0200
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2024-11-23 08:44:44 +0100
commit3e2d18ba63d804a1052663044ad61a57b2351ba8 (patch)
tree3acc52dffe79d66d44cab431da3c6bf65f6130ae /nx-X11/programs/Xserver
parentb6fae31a27591c1e04fdf74ec31e7dc95ba77fc5 (diff)
downloadnx-libs-3e2d18ba63d804a1052663044ad61a57b2351ba8.tar.gz
nx-libs-3e2d18ba63d804a1052663044ad61a57b2351ba8.tar.bz2
nx-libs-3e2d18ba63d804a1052663044ad61a57b2351ba8.zip
prematurely abort ProcSendEvent if a ClientMsg has been fordwarded
Fixes ArcticaProject/nx-libs#1065
Diffstat (limited to 'nx-X11/programs/Xserver')
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Events.c6
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Events.h2
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXevents.c4
3 files changed, 7 insertions, 5 deletions
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Events.c b/nx-X11/programs/Xserver/hw/nxagent/Events.c
index 6456e244a..a29f08d1d 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Events.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Events.c
@@ -4505,7 +4505,7 @@ int nxagentWaitEvents(Display *dpy, useconds_t msec)
return 1;
}
-void ForwardClientMessage(ClientPtr client, xSendEventReq *stuff)
+Bool ForwardClientMessage(ClientPtr client, xSendEventReq *stuff)
{
Atom netwmstate = MakeAtom("_NET_WM_STATE", strlen("_NET_WM_STATE"), False);
Atom wmchangestate = MakeAtom("WM_CHANGE_STATE", strlen("WM_CHANGE_STATE"), False);
@@ -4548,7 +4548,7 @@ void ForwardClientMessage(ClientPtr client, xSendEventReq *stuff)
#endif
}
else
- return; // ERROR!
+ return False; // ERROR!
#ifdef DEBUG
fprintf(stderr, "%s: window [0x%lx]\n", __func__, X.xclient.window);
@@ -4568,8 +4568,10 @@ void ForwardClientMessage(ClientPtr client, xSendEventReq *stuff)
fprintf(stderr, "%s: send to window [0x%lx]\n", __func__, dest);
fprintf(stderr, "%s: return Status [%d]\n", __func__, stat);
#endif
+ return True;
}
}
+ return False;
}
#ifdef NX_DEBUG_INPUT
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Events.h b/nx-X11/programs/Xserver/hw/nxagent/Events.h
index 379bbbcc6..7b15f6274 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Events.h
+++ b/nx-X11/programs/Xserver/hw/nxagent/Events.h
@@ -222,6 +222,6 @@ int nxagentPendingEvents(Display *dpy);
int nxagentWaitEvents(Display *, useconds_t msec);
-void ForwardClientMessage(ClientPtr client, xSendEventReq *stuff);
+Bool ForwardClientMessage(ClientPtr client, xSendEventReq *stuff);
#endif /* __Events_H__ */
diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXevents.c b/nx-X11/programs/Xserver/hw/nxagent/NXevents.c
index 68fb3f412..f5c5fd2c9 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/NXevents.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/NXevents.c
@@ -429,8 +429,8 @@ ProcSendEvent(ClientPtr client)
if (nxagentOption(Rootless) && stuff->event.u.u.type == ClientMessage)
{
- ForwardClientMessage(client, stuff);
- return Success;
+ if (ForwardClientMessage(client, stuff))
+ return Success;
}
if (stuff -> event.u.u.type == SelectionNotify)