Don't end touchpoint if owning client hasn't accepted/rejected
A touchpoint is ended when no further processing will take place for it. This includes the situation where there is only one grabbing client, and the client receives a touch end before it has accepted/rejected the touchpoint. This change ensures that a delivered touch end event is converted into a touch update event under the above scenario. If the event is left as a touch end event, the touchpoint will be ended in ProcessTouchEvent(). Signed-off-by: Chase Douglas <chase.douglas@canonical.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
		
							parent
							
								
									075a473e53
								
							
						
					
					
						commit
						e30c3c5c59
					
				|  | @ -1803,8 +1803,10 @@ DeliverTouchEndEvent(DeviceIntPtr dev, TouchPointInfoPtr ti, InternalEvent *ev, | |||
|                 rc = DeliverOneTouchEvent(client, dev, ti, grab, win, ev); | ||||
|             listener->state = LISTENER_HAS_END; | ||||
|         } | ||||
|         if (ti->num_listeners > 1 && | ||||
|            (ev->device_event.flags & (TOUCH_ACCEPT|TOUCH_REJECT)) == 0) | ||||
|         if ((ti->num_listeners > 1 || | ||||
|              (listener->type == LISTENER_GRAB && | ||||
|               xi2mask_isset(xi2mask, dev, XI_TouchOwnership))) && | ||||
|             (ev->device_event.flags & (TOUCH_ACCEPT|TOUCH_REJECT)) == 0) | ||||
|         { | ||||
|             ev->any.type = ET_TouchUpdate; | ||||
|             ev->device_event.flags |= TOUCH_PENDING_END; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue