mutter:cherry-pick-79e5ec57-6

Last commit made on 2020-10-15
Get this branch:
git clone -b cherry-pick-79e5ec57-6 https://git.launchpad.net/mutter

Branch merges

Branch information

Name:
cherry-pick-79e5ec57-6
Repository:
lp:mutter

Recent commits

e736b52... by Ray Strode <email address hidden>

cally: fix state set leak

cally_actor_action_do_action leaks a state set object in the
case where the actor is defunct, insensitive, or hidden.

This commit plugs the leak.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1225

(cherry picked from commit 79e5ec57d24f1650cdb2f23e68c9f8bf6a494283)

c2e12b3... by Jonas Ådahl

x11: Limit touch replay pointer events to when replaying

When a touch sequence was rejected, the emulated pointer events would be
replayed with old timestamps. This caused issues with grabs as they
would be ignored due to being too old. This was mitigated by making sure
device event timestamps never travelled back in time by tampering with
any event that had a timestamp seemingly in the past.

This failed when the most recent timestamp that had been received were
much older than the timestamp of the new event. This could for example
happen when a session was left not interacted with for 40+ days or so;
when interacted with again, as any new timestamp would according to
XSERVER_TIME_IS_BEFORE() still be in the past compared to the "most
recent" one. The effect is that we'd always use the `latest_evtime` for
all new device events without ever updating it.

The end result of this was that passive grabs would become active when
interacted with, but would then newer be released, as the timestamps to
XIAllowEvents() would out of date, resulting in the desktop effectively
freezing, as the Shell would have an active pointer grab.

To avoid the situation where we get stuck with an old `latest_evtime`
timestamp, limit the tampering with device event timestamp to 1) only
pointer events, and 2) only during the replay sequence. The second part
is implemented by sending an asynchronous message via the X server after
rejecting a touch sequence, only potentially tampering with the device
event timestamps until the reply. This should avoid the stuck timestamp
as in those situations, we'll always have a relatively up to date
`latest_evtime` meaning XSERVER_TIME_IS_BEFORE() will not get confused.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/886

002299f... by Jonas Ådahl

display: Move finishing of touch sequence to the backend

We need to manipulate an X11 grab when a touch sequence ends; move that
logic to where it belongs - in the X11 backend.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/886

f0b7cf4... by Jonas Ådahl

crtc-kms: Ignore 90° rotations

They tend to require special modifiers or won't work at all; ignore
them.

ad4dbef... by Tim Klocke

backends: Update inhibited state for the monitor and respect that state

The inhibited state of the monitor was after the initializiation never
updated. meta_idle_monitor_reset_idletime didn't respect the inhibited
state, so it set timeouts if it shouldn't have.

Fixes: https://gitlab.gnome.org/GNOME/mutter/issues/573

(cherry picked from commit 81ee8886ceb64fecff74655cb971966cb88295d7)

5a486f5... by Daniel van Vugt

background: Reload when GPU memory is invalidated

Fixes corrupt background wallpaper when resuming from suspend on the
Nvidia driver.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/1084

(cherry picked from commit a5265365dd268e15a461a58000a10b122d0bccba)

https://gitlab.gnome.org/GNOME/mutter/merge_requests/777

bb5c7b9... by Christian Kirbach

Update German translation (Launchpad bug 1786977)

b7f1588... by Marco Trevisan (Treviño)

metatest: Dispatch the destruction instead of sleeping after it

https://gitlab.gnome.org/GNOME/mutter/merge_requests/669/

(cherry picked from commit ecf7e532065438bc48c0be6860c9b51b9a90a42d)

88e492c... by Marco Trevisan (Treviño)

window-x11: Remove double definition of MetaStack

In commit ed03ce53b we introduced a double definition of MetaStack due to a
wrong cherry-pick conflict resolution.

Fix this by removing the invalid duplicated line.

Related to https://gitlab.gnome.org/GNOME/mutter/merge_requests/688

ed03ce5... by Marco Trevisan (Treviño)

window-x11: Focus a window in the active workspace as take-focus fallback

Starting with commit 2db94e2e we try to focus a fallback default focus window
if no take-focus window candidate gets the input focus when we request it and
we limit the focus candidates to the current window's workspace.

However, if the window is unmanaging, the workspace might be unset, and we could
end up in deferencing a NULL pointer causing a crash.

So, in case the window's workspace is unset, just use the currently active
workspace for the display.

Closes https://gitlab.gnome.org/GNOME/mutter/issues/687

https://gitlab.gnome.org/GNOME/mutter/merge_requests/688

(cherry picked from commit 5ca0ef078d39548edda1a97e9066d44aa8f38108)