• Olivier Fourdan's avatar
    events: Sync pending pointer events without a window · 4b88c183
    Olivier Fourdan authored
    Mutter issues a synchronous grab on the pointer for unfocused client
    windows to be able to catch the button events first and raise/focus
    client windows accordingly.
    When there is a synchronous grab in effect, all events are queued until
    the grabbing client releases the event queue as it processes the events.
    Mutter does release the events in its event handler function but does so
    only if it is able to find the window matching the event. If the window
    is a shell widget, that matching may fail and therefore Mutter will not
    release the events, hence causing a freeze in pointer events delivery.
    To avoid the issue, make sure we sync the pointer events in case we
    can't find a matching window.
events.c 15.7 KB