mutter:mcatanzaro/#2985

Last commit made on 2023-09-01
Get this branch:
git clone -b mcatanzaro/#2985 https://git.launchpad.net/mutter

Branch merges

Branch information

Name:
mcatanzaro/#2985
Repository:
lp:mutter

Recent commits

491a370... by Michael Catanzaro <email address hidden>

Fix crashes on idle

Currently whenever GNOME reaches its idle timeout and attempts to lock
the screen, it crashes. The problem occurs in
meta_onscreen_native_invalidate(), which calls
meta_output_is_privacy_screen_supported(),
meta_output_is_color_space_supported(), and
meta_output_is_hdr_metadata_supported(). For the KMS backend, all three
functions assume that meta_kms_connector_get_current_state() returns a
non-NULL pointer. This assumption is wrong.

This fixes the problem just enough to avoid the crashes that users are
encountering in practice. The problem is not comprehensively fixed. E.g.
even MetaKmsConnector itself often assumes that the current_state is
non-NULL without any evidence or assertions that it's true. Further
investigation is required; either it should be NULL-checked everywhere,
or it should be prevented from ever becoming NULL, or some more precise
invariant should be enforced.

Fixes #2985

9873853... by Daniel van Vugt

thread: Remove unused variable when HAVE_PROFILER is not defined

This fixes a compiler warning:
```
meta-thread.c:297:16: warning: unused variable ‘context’ [-Wunused-variable]
  297 | MetaContext *context = meta_backend_get_context (priv->backend);
      | ^~~~~~~
```

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3223>

fdbd381... by Daniel van Vugt

x11/events: Don't define an unused function when tracing is disabled

This fixes a compiler warning:
```
src/x11/events.c:523:1: warning: ‘get_event_name’ defined but not used [-Wunused-function]
  523 | get_event_name (MetaX11Display *x11_display,
      | ^~~~~~~~~~~~~~
```

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3223>

aed9f7e... by Carlos Garnacho

backends: Make base MetaCursorRenderer implementation want an overlay

This used to be the behavior, until commit 5d35138df02 changed the meaning
of the return value of MetaCursorRendererClass::update_cursor(). This
made the user of pure-overlay cursors (singular, MetaWaylandTabletTool)
miss their overlays.

Change the return value, so that it matches the desired behavior of
a backend-less overlay-only cursor renderer.

Fixes: 5d35138df02 ("cursor-renderer: Make 'handled_by_backend' state 'needs_overlay'")
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3218>

d24be90... by Carlos Garnacho

backends/native: Fix accounting of cursor overlay inhibition

We react on changes to has_hw_cursor, but always try to inhibit if
there is no cursor sprite. While this looks like a reasonable optimization
with the typical situation of one cursor renderer, it may fall into
inhibiting twice without knowing to unwind, e.g.:

1. has_hw_cursor: TRUE, cursor_sprite: !=NULL -> inhibit
2. has_hw_cursor: FALSE, cursor_sprite: NULL -> inhibit
3. has_hw_cursor: TRUE, cursor_sprite: !=NULL -> uninhibit, but once

And this may also result in the CLUTTER_PAINT_FLAG_NO_CURSORS flag
staying on for Tablet cursors, that (so far) always use overlay paths.
This results in invisible tablet cursors after using the mouse at
least once.

Fixes: e52641c4b68 ("cursor-renderer/native: Replace HW cursor with KMS cursor manager")
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3218>

630f13d... by Carlos Garnacho

x11: Handle ConfigureRequest events in frames

Under strange timings, the GTK frames client may implicitly queue
relayouts that end up disagreeing with the latest frame size as
given by Mutter, this results in GTK calling XResizeWindow, and
Mutter plain out ignoring the resulting XConfigureRequestEvent
received.

This however makes GTK think there's pending resize operations,
so at the next resize it will freeze the window, until enough
resizes happened to thaw it again. This is seen as temporary
loss of frame-sync ness (e.g. frozen frame, and other weird
behavior).

In order to make GTK happy and balanced, reply to this
XConfigureRequest, even if just to ignore it in a more polite
way (we simply re-apply the size Mutter thinks the frame should
have, not GTK), this results in the right amount of
ConfigureNotify received on the frames client side, and the
surface to be thawed more timely, while enforcing the size as
managed by Mutter.

Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2837
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3189>

c3eb819... by aurisc4

Update Lithuanian translation

025e5d5... by Daniel van Vugt

Remove unused *.pc.in

It seems *.pc are instead now entirely generated from meson.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3226>

491e287... by Daniel van Vugt

clutter: Mutter-clutter requires mutter-mtk

Because the public headers of the former reference the latter.

Fixes: 765a918a62c76d5ce0cee48a0b1a74127214b0f3
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6969
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3225>

788caf7... by Bilal Elmoussaoui <email address hidden>

boxes: Add an alias for MetaRectangle

This is meant for compatibility purposes with the shell extensions
avoiding to break a bunch of them in the last minute and we would
drop it in the GNOME 46 release.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3128>