dix: split client list retrieval out of DeliverEventToClients
No functional change, but "other" was renamed to "clients". Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com> Reviewed-by: Daniel Stone <daniel@fooishbar.org>
This commit is contained in:
		
							parent
							
								
									02d11af012
								
							
						
					
					
						commit
						37a53f15b0
					
				
							
								
								
									
										56
									
								
								dix/events.c
								
								
								
								
							
							
						
						
									
										56
									
								
								dix/events.c
								
								
								
								
							| 
						 | 
				
			
			@ -2037,6 +2037,44 @@ DeliverToWindowOwner(DeviceIntPtr dev, WindowPtr win,
 | 
			
		|||
    return EVENT_NOT_DELIVERED;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Get the list of clients that should be tried for event delivery on the
 | 
			
		||||
 * given window.
 | 
			
		||||
 *
 | 
			
		||||
 * @return 1 if the client list should be traversed, zero if the event
 | 
			
		||||
 * should be skipped.
 | 
			
		||||
 */
 | 
			
		||||
static Bool
 | 
			
		||||
GetClientsForDelivery(DeviceIntPtr dev, WindowPtr win,
 | 
			
		||||
                      xEvent *events, Mask filter, InputClients **clients)
 | 
			
		||||
{
 | 
			
		||||
    int rc = 0;
 | 
			
		||||
 | 
			
		||||
    if (core_get_type(events) != 0)
 | 
			
		||||
        *clients = (InputClients *)wOtherClients(win);
 | 
			
		||||
    else if (xi2_get_type(events) != 0)
 | 
			
		||||
    {
 | 
			
		||||
        OtherInputMasks *inputMasks = wOtherInputMasks(win);
 | 
			
		||||
        /* Has any client selected for the event? */
 | 
			
		||||
        if (!GetWindowXI2Mask(dev, win, events))
 | 
			
		||||
            goto out;
 | 
			
		||||
        *clients = inputMasks->inputClients;
 | 
			
		||||
    } else {
 | 
			
		||||
        OtherInputMasks *inputMasks = wOtherInputMasks(win);
 | 
			
		||||
        /* Has any client selected for the event? */
 | 
			
		||||
        if (!inputMasks ||
 | 
			
		||||
            !(inputMasks->inputEvents[dev->id] & filter))
 | 
			
		||||
            goto out;
 | 
			
		||||
 | 
			
		||||
        *clients = inputMasks->inputClients;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    rc = 1;
 | 
			
		||||
out:
 | 
			
		||||
    return rc;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Deliver events to clients registered on the window.
 | 
			
		||||
 *
 | 
			
		||||
| 
						 | 
				
			
			@ -2053,24 +2091,8 @@ DeliverEventToClients(DeviceIntPtr dev, WindowPtr win, xEvent *events,
 | 
			
		|||
    enum EventDeliveryState rc = EVENT_SKIP;
 | 
			
		||||
    InputClients *other;
 | 
			
		||||
 | 
			
		||||
    if (core_get_type(events) != 0)
 | 
			
		||||
        other = (InputClients *)wOtherClients(win);
 | 
			
		||||
    else if (xi2_get_type(events) != 0)
 | 
			
		||||
    {
 | 
			
		||||
        OtherInputMasks *inputMasks = wOtherInputMasks(win);
 | 
			
		||||
        /* Has any client selected for the event? */
 | 
			
		||||
        if (!GetWindowXI2Mask(dev, win, events))
 | 
			
		||||
    if (!GetClientsForDelivery(dev, win, events, filter, &other))
 | 
			
		||||
        goto out;
 | 
			
		||||
        other = inputMasks->inputClients;
 | 
			
		||||
    } else {
 | 
			
		||||
        OtherInputMasks *inputMasks = wOtherInputMasks(win);
 | 
			
		||||
        /* Has any client selected for the event? */
 | 
			
		||||
        if (!inputMasks ||
 | 
			
		||||
            !(inputMasks->inputEvents[dev->id] & filter))
 | 
			
		||||
            goto out;
 | 
			
		||||
 | 
			
		||||
        other = inputMasks->inputClients;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    rc = EVENT_NOT_DELIVERED;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue