diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2013-04-24 14:40:31 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2013-05-10 14:32:38 +1000 |
commit | 5b00fc52270e9cfdfe7ac1838a21defe50fc3d31 (patch) | |
tree | c7e7d0deb2b6dea4856df4519d920c4629d0197c /dix/dispatch.c | |
parent | 34c9b39d9937c2e19c2dffc9748605f90d40f965 (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.c | 1 |
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. */ |