diff options
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/Events.c | 8 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/Events.h | 2 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/NXevents.c | 4 |
3 files changed, 8 insertions, 6 deletions
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Events.c b/nx-X11/programs/Xserver/hw/nxagent/Events.c index 6456e244a..c8371b57c 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Events.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Events.c @@ -4505,14 +4505,14 @@ 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); WindowPtr pWin = (WindowPtr)SecurityLookupWindow(stuff->destination, client, DixReadAccess); - if (stuff->event.u.clientMessage.u.l.type == netwmstate || stuff->event.u.clientMessage.u.l.type == wmchangestate) + if (pWin && (stuff->event.u.clientMessage.u.l.type == netwmstate || stuff->event.u.clientMessage.u.l.type == wmchangestate)) { if (pWin->drawable.id == pWin->drawable.pScreen->root->drawable.id) { @@ -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) |