commit cdf1527689fc1d245a7b3d015d86791da5956bea
Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Tue Jun 30 17:46:52 2026 +0800
Update symbol versions for 51.alpha
commit c49615fb3ca979d30692752f0e9207765d47fb5d
Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Tue Jun 30 17:39:30 2026 +0800
debian/rules: The API version is now the Mutter major version
commit 04c67d5b6b6076e2f3b042ab0f5d5c8b2db70f43
Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Tue Jun 30 17:34:13 2026 +0800
debian/rules: Drop deprecated egl_device and wayland_eglstream
The features don't exist anymore in 51.alpha and have been replaced
entirely by libgbm.
commit 206bc2a7d017f4d10bc2cbc4b1453e8d4902a92b
Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Tue Jun 30 17:28:42 2026 +0800
Refresh patches
commit bb7da18edaf7226b11e46a8376bc25ce2d0d46c1
Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Tue Jun 30 17:21:36 2026 +0800
Drop upstreamed patches
commit 9b7d5a84bfdaa43228c270ee67b24418f672aabf
Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Tue Jun 30 17:18:43 2026 +0800
debian/control: Update dependencies to match the 51.alpha tag
commit b901eca3943aba2999124a432e3f792c0cf5d4de
Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Tue Jun 30 17:09:01 2026 +0800
debian: Bump the API/ABI from 18 to 51
Finally.
commit 77681f449e5385c30ec9292a882fec3de9c9227a
Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Tue Jun 30 17:03:03 2026 +0800
debian/changelog: Add an entry for 51.alpha
commit 160174a012016ff9c5fb3025876396b83c63ac52
Merge: 679c0ee1 ed58edf0
Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Tue Jun 30 17:02:12 2026 +0800
Merge tag 'upstream/51_alpha' into debian/latest
commit ed58edf0b00dcab4f0875e6d87e42c6c86f1e1eb
Merge: e067ca5e 50a4289e
Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Tue Jun 30 16:51:25 2026 +0800
Merge tag '51.alpha' into upstream/latest
And remove newer changes in 50.2 that don't exist in 51.alpha
The only diff remaining to the 51.alpha tag now is subprojects/*
so we are matching the upstream release tarball.
commit 50a4289e4d0742815b9b8e220bb27277202a54c7
Author: Florian Müllner <fmuellner@gnome.org>
Date: Mon Jun 29 16:32:06 2026 +0200
Bump version to 51.alpha
Update NEWS.
commit 62b67096d62b474f0fcfd111e49922407755bfa0
Author: Sebastian Keller <skeller@gnome.org>
Date: Thu Jun 11 20:28:03 2026 +0200
wayland/text-input: Restore OSK trigger for version 1 of text_input_v3
In version 1 of text_input_v3 we used two consecutive `enable()` calls
to trigger the OSK. This was dropped in f24e857b when introducing
support for version 2 which now allows explicitly showing/hiding the
OSK. This meant that for clients not supporting version 2 yet, it was
impossible to trigger the OSK.
This now restores this method for clients still using version 1.
Fixes: f24e857bb2 ("wayland: Implement version 2 of text_input_v3 protocol")
Closes: https://gitlab.gnome.org/GNOME/mutter/-/work_items/4857
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5117>
commit b7a2dad45a76498bb427f8fb856084faa248601c
Author: Marius Cirsta <mforce2@gmail.com>
Date: Sun Jun 21 23:11:33 2026 +0300
backends/native: Don't add fallback modes to tiled connectors
maybe_add_fallback_modes() synthesises a set of common CVT modes and
appends them to a connector so the user can select resolutions the panel
does not natively advertise (the GPU scales them to fit). That only makes
sense for a standalone panel.
A connector that belongs to a tile group is not standalone: it drives one
tile of a larger monitor and must always run its native tile timing, or
the tiles stop lining up into the combined framebuffer. Every fallback
mode added to a tile is therefore unusable.
It is also actively harmful. find_untiled_output() chooses a tiled
monitor's representative output by counting each tile's non-tile modes via
count_untiled_crtc_modes(). The injected fallback modes are counted there,
so a tile that happens to receive more of them can outvote the tile that
owns the real full-panel modes and become the monitor's main output. The
panel's true resolutions then disappear from the UI.
This is observable on Apple dual-tile 5K panels: the right tile is a
non-eDP DisplayPort connector with a single portrait mode, so it is not
covered by the existing eDP guard below and gets ~40 portrait CVT
fallbacks. That makes it outvote the left (eDP) tile, and the panel's
landscape modes -- including the single-tile 4K compatibility mode -- stop
being offered.
Skip fallback-mode injection whenever the connector is part of a tile
group.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5134>
commit a7cc2b6d945a140d7a2f712f05977fe9a45a6129
Author: Carlos Garnacho <carlosg@gnome.org>
Date: Mon Jun 22 13:27:33 2026 +0200
wayland: Keep weak ref on cursor renderer
This is not called anywhere down the line if the cursor renderer
happened to be disposed underneath by the backend, possibly resulting
in leaked MetaCursorRenderers, and stale cursors on screen.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5126>
commit c1c763c0c711be6d3124ae6a93c2333c3973df91
Author: Carlos Garnacho <carlosg@gnome.org>
Date: Fri Jun 19 13:03:28 2026 +0200
clutter: Avoid cursor renderer flickering in event handling
For all devices, it makes sense to update the ClutterSprite position
first, before updating the cursor, this may result in the KMS cursor
briefly popping in the previous coordinates, before catching up with
the position.
More specifically for tablets, avoid the CLUTTER_PROXIMITY_IN event
in re-picking, since this event is only informational about the stylus
in use, and does not have any coordinates itself.
Altogether, fixes some cursor flickering between old and new position
after PROXIMITY_OUT + PROXIMITY_IN.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5126>
commit 25a296c3811ed7a886b32a2fb03ba55c8fceecb1
Author: Carlos Garnacho <carlosg@gnome.org>
Date: Fri Jun 19 13:01:50 2026 +0200
backends: Avoid cursor renderer flicker when re-assigning sprite
Ensure the cursor renderer coordinates update immediately to those
of the given sprite, instead of waiting for the next event. This
avoids the cursor flickering between the old sprite's position and
the new one when e.g. switching between pointer and tablet input.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5126>
commit e934dffe4cb9607795d3e29f8d1a32a2e7a44900
Author: Carlos Garnacho <carlosg@gnome.org>
Date: Wed Jun 17 16:22:09 2026 +0200
clutter: Reset tablet tool sprite's clear area on PROXIMITY_OUT
Otherwise, the tablet tool might still consider itself still within the
prior actor coordinates if the area was large enough. This was most
harmful with a fullscreen client.
Closes: https://gitlab.gnome.org/GNOME/mutter/-/work_items/4803
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5126>
commit b8c52af306c14f09a4d058f5901f5f1d78485b82
Author: Carlos Garnacho <carlosg@gnome.org>
Date: Wed Jun 17 15:36:33 2026 +0200
clutter: Avoid repicking sprites without an actor
When handling possible device updates within a view, skip the
sprites that do not have a current target actor. This may be the
case for pointer cursors with focus inhibition in place (although
indirectly prevented though other means), or the case of tablet
cursors between PROXIMITY_OUT and the next PROXIMITY_IN.
So notably on tablet devices, this would result in a cursor popping
into existence again, possibly picking things underneath. The future
PROXIMITY_IN event will result in a new target actor anyways, so this
is only undesirable.
Closes: https://gitlab.gnome.org/GNOME/mutter/-/work_items/4678
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5126>
commit 657bcd293f25a8a0d6e13333b316014207368725
Author: Carlos Garnacho <carlosg@gnome.org>
Date: Wed Jun 17 14:56:56 2026 +0200
backends: Update cursor renderers on preference changes
Ensure the sprite cursors' are invalidated, and looked up again
through the backend in case of ClutterCursorType cursors, so the
preference changes apply immediately.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5126>
commit 86160202c955de3aad566c97112c8a990dceb5c6
Author: Carlos Garnacho <carlosg@gnome.org>
Date: Wed Jun 17 14:44:17 2026 +0200
wayland: Drop intermediate caching of cursors for cursor types
Make the pointer and tablet tool interfaces stop storing the
ClutterCursor, it will either come from the cursor surface, or
obtained from the ClutterBackend for the pointer shape in effect.
As a side effect, the whole meta_wayland_compositor_get_cursor()
chain of calls is now (transfer full), this is in line with the
behavior of the ClutterActor::get_cursor_for_sprite vmethod that
these method provide support for, in Wayland surface actors.
This will help make things like cursor size changes work out of
the box, without special hooks on preference changes to drop these
caches.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5126>
commit 8cb2bce89596c27b3817702065c08885d28d9fbb
Author: Carlos Garnacho <carlosg@gnome.org>
Date: Fri Jun 19 23:50:32 2026 +0200
backends/native: Return NULL cursor renderer for unpicked sprites
When the sprite has a NULL actor (e.g. pointer cursor is inhibited, or
tablet after PROXIMITY_OUT), the related cursor renderer is detached from
the sprite.
However there is a number of paths that may lead to
meta_seat_native_maybe_ensure_cursor_renderer() on any of the sprites
that may promptly undo this, often making the pointer cursor's sprite
earn again a cursor renderer, and monopolize the HW cursor renderer
this way.
Make sprites with a NULL picked actor use a NULL cursor renderer, so
it is more reliable that the cursor renderer can be taken other by
other sprites.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5126>
commit de5ee29e94efaa210cf94a46fdbdd3fc3f17347a
Author: Carlos Garnacho <carlosg@gnome.org>
Date: Tue Jun 23 07:33:45 2026 +0200
backends/native: Initialize HW cursor support right away
The native cursor renderer creation may be delayed now, meaning
it won't catch MetaContext::on-started on time to set itself up.
This might result in the native cursor renderer sticking to the
overlay fallbacks, so initialize HW cursor data right away, or
await for future ::gpu-added signals.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5126>
commit 20edb1a624ec75d3eb0d232e4e4b2d6484cb257d
Author: Carlos Garnacho <carlosg@gnome.org>
Date: Mon Jun 22 18:43:02 2026 +0200
backends: Ignore motion from virtual source pointer
This may be the case during pointer warping and whatnot, and may
happen despite there being actual hw pointer devices or not. Ignore
those events altogether.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5126>
commit d9a9ae599b936f0f4e37d595dcf5d98fb8b13bfa
Author: Carlos Garnacho <carlosg@gnome.org>
Date: Wed Jun 17 16:26:33 2026 +0200
compositor: Check all cursor renderers looking for scanout candidates
Check for any overlapping cursor renderer requiring an overlay, not just
the pointer's. This will correctly result in the surface actor being
demoted as scanout candidate if there are any secondary cursor renderers
on it, as well as correctly promoted if it's other sprite than the
pointer's which is the current owner of the HW cursor plane.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5126>
commit 78ca6bc6b717f0e041c21f9ef182da6e03839fa4
Author: Carlos Garnacho <carlosg@gnome.org>
Date: Thu Jun 18 15:47:43 2026 +0200
backends: Handle NULL cursor renderer on startup
There might be no guarantees that one is needed or created at all,
handle the case of it being NULL
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5126>
commit 26d9ab6f2f88ba412eba4266c613c737f7dfa21e
Author: Carlos Garnacho <carlosg@gnome.org>
Date: Thu Jun 18 13:02:26 2026 +0200
tests: Handle a NULL cursor renderer
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5126>
commit 4e87cf961a0f16bac27615a2e1f226929ecab502
Author: Bilal Elmoussaoui <belmouss@redhat.com>
Date: Thu Jun 25 16:34:25 2026 +0200
cogl: Drop no longer read driver features
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5140>
commit 2bae67c21f24cd7d60d4770a0754133f7614f0bb
Author: Jonas Ådahl <jadahl@gmail.com>
Date: Tue Jun 9 11:48:03 2026 +0200
tests: Add barrier destroy race test
The test checks that destroying a barrier when there is a pending event
is gracefully handled.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5107>
commit 3fd1cfa6257a43a2b4cf855db8d22772c7844e17
Author: Jonas Ådahl <jadahl@gmail.com>
Date: Tue Jun 9 11:47:27 2026 +0200
tests/test-runner: Add commands to create/destroy barriers
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5107>
commit 96ec54b0b1718b9be40cfbd01d11776c4adf10fb
Author: Zander Brown <zbrown@gnome.org>
Date: Fri Jun 12 17:11:32 2026 +0100
barrier: Don't emit on inactive barrier
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5107>
commit 8e5f7b125824df34fc5c364ace2c0e130ebd7cfa
Author: Zander Brown <zbrown@gnome.org>
Date: Sat Jun 6 21:22:55 2026 +0100
barrier: Ensure lives long enough for idle emit
The idle source took ownership of the event, but then simply presumed
the barrier itself would be long-lived. The session I just lost would
seem to suggest this assumption isn't entirely sound 😅.
Avoid this by holding a reference for the lifetime of the source.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5107>
commit 8de03803031d7188bb66e13ede6bc506e76e5450
Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Thu Jun 25 16:21:40 2026 +0800
cogl/context: Set the correct flag for COGL_WINSYS_FEATURE_SYNC_FD
`COGL_WINSYS_FEATURE_SYNC_FD` was accidentally lost during !4866.
`COGL_FEATURE_ID_FENCE` is already set by the if statement before this
one.
Fixes: 9762dbacc0 ("native: Create a RendererEgl sub-type")
Closes: https://gitlab.gnome.org/GNOME/mutter/-/work_items/4876
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5139>
commit 092662e0fdaae76899be91f93397c4b5a8821b07
Author: Antonio Marin <gnmer.6qxyg@slmail.me>
Date: Wed Jun 24 09:07:59 2026 +0000
Update Romanian translation
Co-authored-by: Antonio Marin <gnmer.6qxyg@slmail.me>
commit ddd5326a0eb5273af8b9f10242ae26f52b00d793
Author: Bilal Elmoussaoui <belmouss@redhat.com>
Date: Thu May 28 13:14:55 2026 +0200
cogl: Winsys begone
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5085>
commit 44aeada64dda04acb23cc614d479acab08450cdb
Author: Bilal Elmoussaoui <belmouss@redhat.com>
Date: Thu May 28 12:40:31 2026 +0200
cogl/context: Move various fields to ContextEGL
As that is where they belong all along, also rename the
default_gl_texture_2d_tex to default_2d_texture.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5085>
commit e47e4a68a7e51187b98c9fede8a4f90e9e2f8603
Author: Bilal Elmoussaoui <belmouss@redhat.com>
Date: Thu May 28 11:53:37 2026 +0200
cogl/context: Add a ContextEGL variant
This is mostly making CoglContext abstract. Nothing is moved yet to
CoglContextEGL.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5085>
commit 65751b504624bac7c3a6dbf074be9968bacd1cb0
Author: Bilal Elmoussaoui <belmouss@redhat.com>
Date: Thu May 28 11:24:58 2026 +0200
cogl/context: Implement Initable
Allows moving all the falliable code to it instead of doing that in
cogl_context_new
So that sub-types would inherit from it automatically.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5085>
Among the 7 debian patches available in version 50.2-3 of the package, we noticed the following issues:
Automatic checks made by the Debian l10n team found some issues with the translations contained in this package. You should check the l10n status report for more information.
Issues can be things such as missing translations, problematic translated strings, outdated PO files, unknown languages, etc.