From 47734b2ba2e1f9246fd1a3b7059ca60b0e15acb2 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 8 Dec 2011 12:00:34 +1000 Subject: dix: move delivery stop condition out of event mask Previously, this was only called if there was a mask match, so even if we had a no-propagate flag set or a stopAt window specified, if no mask triggered on the window we would recurse up to the root window and eventually deliver. Move this, so that the stopAt and do-not-propagate mask is honoured. Signed-off-by: Peter Hutterer Reviewed-by: Chase Douglas --- dix/events.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'dix') diff --git a/dix/events.c b/dix/events.c index 9fcd447a3..9703ca9cd 100644 --- a/dix/events.c +++ b/dix/events.c @@ -2693,12 +2693,13 @@ DeliverDeviceEvents(WindowPtr pWin, InternalEvent *event, GrabPtr grab, break; } - if ((deliveries < 0) || (pWin == stopAt) || - (mask & EVENT_DONT_PROPAGATE_MASK)) - { - deliveries = 0; - break; - } + } + + if ((deliveries < 0) || (pWin == stopAt) || + (mask & EVENT_DONT_PROPAGATE_MASK)) + { + deliveries = 0; + break; } child = pWin->drawable.id; -- cgit v1.2.3