[PATCH xserver] dix: Remove clients from input and output ready queues after closing
Keith Packard
keithp at keithp.com
Thu May 11 18:20:59 UTC 2017
Delay removing the client from these two queues until all potential
I/O has completed in case we mark the client as ready for reading or
with pending output during the close operation.
Bugzilla: https://bugs.freedesktop.org/100957
Signed-off-by: Keith Packard <keithp at keithp.com>
Tested-by: Nick Sarnie <commendsarnex at gmail.com>
---
dix/dispatch.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/dix/dispatch.c b/dix/dispatch.c
index a2df1e0e6..8b371b678 100644
--- a/dix/dispatch.c
+++ b/dix/dispatch.c
@@ -3414,7 +3414,6 @@ CloseDownClient(ClientPtr client)
if (grabState != GrabNone && grabClient == client) {
UngrabServer(client);
}
- mark_client_not_ready(client);
BITCLEAR(grabWaiters, client->index);
DeleteClientFromAnySelections(client);
ReleaseActiveGrabs(client);
@@ -3443,8 +3442,9 @@ CloseDownClient(ClientPtr client)
if (ClientIsAsleep(client))
ClientSignal(client);
ProcessWorkQueueZombies();
- output_pending_clear(client);
CloseDownConnection(client);
+ output_pending_clear(client);
+ mark_client_not_ready(client);
/* If the client made it to the Running stage, nClients has
* been incremented on its behalf, so we need to decrement it
--
2.11.0
More information about the xorg-devel
mailing list