• Neil Roberts's avatar
    input: Emit events on all resources for a client · 96d790e7
    Neil Roberts authored
    The Wayland protocol permits a client to request the pointer, keyboard
    and touch multiple times from the seat global. This is very useful in a
    component like Clutter-GTK where we are combining two libraries that use
    Wayland together.
    
    This change migrates the weston input handling code to emit the
    events for all the resources for the client by using the newly added
    wl_resource_for_each macro to iterate over the resources that are
    associated with the focused surface's client.
    
    We maintain a list of focused resources on the pointer and keyboard
    which is updated when the focus changes. However since we can have
    resources created after the focus has already been set we must add the
    resources to the right list and also update any state.
    
    Additionally when setting the pointer focus it will now send the
    keyboard modifiers regardless of whether the focused client has a
    pointer resource. This is important because otherwise if the client
    gets the pointer later than you getting the keyboard then the
    modifiers might not be up-to-date.
    
    Co-author: Neil Roberts <neil@linux.intel.com>
    96d790e7
input.c 46 KB