mutter/src
Carlos Garnacho 1d5676bc9a wayland: Handle event interface changes during focus synchronization
Currently, we don't handle too well the removal of a MetaWaylandEventInterface
during meta_wayland_event_interface_invalidate_all_focus(), since the
MetaWaylandEventInterface may be freed at an intermediate point in that function
while handling the focus change for all input devices.

Turn this invalidate_all_focus() function into a MetaWaylandInput method, and
always ensure to use the currently effective MetaWaylandEventInterface when
resetting the focus for each device.

This fixes the situation through handling reentrancy naturally, a focus
sync (say, triggered by a grab) would reset a device focus (say, pointer), which
would remove an event interface (say, a pointer constraint), which would
invalidate_all_focus() again underneath using the new effective
MetaWaylandEventInterface. When that is done, the initial invalidate_all_focus()
call would re-apply the same focus to the same currently effective
MetaWaylandEventInterface, resulting in a no-op for the remainder of the function.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3618>
2024-02-26 22:15:19 +00:00
..
backends kms/connector: Remove getters for state tracked by KmsConnectorState 2024-02-26 18:18:53 +00:00
common backend/native: Move DrmFormatBuf to cogl-drm-formats 2024-01-03 14:46:41 +01:00
compositor cogl: Remove Color.init_from_4ub 2024-02-22 12:34:58 +00:00
core window: Handle layer of DOCK windows 2024-02-26 11:19:03 +00:00
frames frames: Drop unused border property from frame content 2024-02-26 17:03:56 +00:00
meta wayland/client: Add make_desktop() method 2024-02-26 11:19:03 +00:00
tests tests/kms/update: Use proper gamma LUT size 2024-02-26 18:18:53 +00:00
wayland wayland: Handle event interface changes during focus synchronization 2024-02-26 22:15:19 +00:00
x11 window: Handle layer of DOCK windows 2024-02-26 11:19:03 +00:00
meson.build wayland: Introduce MetaWaylandInput/MetaWaylandEventInterface 2024-02-13 01:01:48 +01:00
meta-private-enum-types.c.in build: Add missing include 2022-08-10 20:28:40 +02:00
meta-private-enum-types.h.in cleanup: Switch to pragma once 2023-08-07 22:24:36 +00:00