summaryrefslogtreecommitdiff
path: root/dix/dispatch.c
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2013-04-24 14:40:31 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2013-05-10 14:32:38 +1000
commit5b00fc52270e9cfdfe7ac1838a21defe50fc3d31 (patch)
treec7e7d0deb2b6dea4856df4519d920c4629d0197c /dix/dispatch.c
parent34c9b39d9937c2e19c2dffc9748605f90d40f965 (diff)
Move TouchListenerGone call to CloseDownClient
TouchListenerGone cleans up if a client disappears. Having this in FreeGrab() triggers cyclic removal of grabs, emitting wrong events. In particular, it would clean up a passive grab record while that grab is active. Move it to CloseDownClient() instead, cleaning up before we go. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'dix/dispatch.c')
-rw-r--r--dix/dispatch.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/dix/dispatch.c b/dix/dispatch.c
index 1363f223d..51d0de25f 100644
--- a/dix/dispatch.c
+++ b/dix/dispatch.c
@@ -3399,6 +3399,7 @@ CloseDownClient(ClientPtr client)
clientinfo.setup = (xConnSetup *) NULL;
CallCallbacks((&ClientStateCallback), (pointer) &clientinfo);
}
+ TouchListenerGone(client->clientAsMask);
FreeClientResources(client);
/* Disable client ID tracking. This must be done after
* ClientStateCallback. */