commit c4e1300d770d84fa3206b12315586bfad5a5b7c4
Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Fri Sep 4 10:25:39 2026 +0800
Drop debian/mutter-common.gsettings-override
Because "experimental-features" doesn't exist anymore since 51.beta, and the
features we overrode have not been experimental since 50.0. (LP: #2166433)
commit e554f6ed97b91b0a598d3088625b9b4665610092
Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Thu Sep 3 17:33:35 2026 +0800
gir1.2-mutter-51 51~rc can break gnome-shell 51~beta
Because libmutter has removed some symbols.
It seems depending on libmutter-51-0 (= ${binary:Version}) wasn't enough
and gir1.2-mutter-51 could still be installed and unconfigured without the
new libmutter-51-0, leading to gnome-shell 51~beta thinking symbols were
missing. Because they were missing in GIR, even though they weren't missing
in libmutter-51-0.
commit 68e3fdc8811b23f75fc7bd413857736f982ed5c2
Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Thu Sep 3 17:09:43 2026 +0800
Update breaks for libmutter-51-0
commit 1e99754093e51d7f9366b632bee6124f92480166
Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Thu Sep 3 16:34:52 2026 +0800
Update symbols for 51.rc
commit f43a252aaec5c90dbbd21271debae54ebab70b8a
Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Thu Sep 3 16:04:40 2026 +0800
Refresh patches
commit 5981272d4b59951d5b3a17f750f52bf7ebaaac47
Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Thu Sep 3 16:00:34 2026 +0800
debian: Initial preparations for 51~rc-1
commit 36055019826911ef4d424abd2fb358f02cdcc80e
Merge: 5924d74f c9c99566
Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Thu Sep 3 15:57:11 2026 +0800
Merge tag 'upstream/51_rc' into debian/latest
commit 5924d74f27b53525ebd0012b69b654a7cd32c5c6
Author: Simon McVittie <smcv@debian.org>
Date: Sun Aug 23 13:32:16 2026 +0100
Update changelog
commit bb7fd93d58458c357b6c11c90a06bd4fa1a81e41
Merge: 65d1b885 981fb3dd
Author: Simon McVittie <smcv@debian.org>
Date: Sun Aug 23 13:31:57 2026 +0100
Merge branch 'debian/forky' into debian/latest
commit 981fb3dd347ad3368acdf8ba2779bfd9c689e12e
Author: Simon McVittie <smcv@debian.org>
Date: Sun Aug 23 13:28:26 2026 +0100
Team upload
commit 36962465c89946ced43d95e42f1eb58f3f638b03
Author: Simon McVittie <smcv@debian.org>
Date: Sat Aug 22 16:09:27 2026 +0100
New upstream release
commit b3f45664abeee1b09d20a89ad65578aa1bab34df
Merge: 884a40e7 774e9a31
Author: Simon McVittie <smcv@debian.org>
Date: Sat Aug 22 16:09:26 2026 +0100
Update upstream source from tag 'upstream/50.4'
Update to upstream version '50.4'
with Debian dir 939f4acc82356ec189364f5e5db643e6d9f63662
commit 774e9a31d36b4b146c51475b2c404270ce35df6d
Merge: 639f883d 8fe247a2
Author: Simon McVittie <smcv@debian.org>
Date: Sat Aug 22 16:09:02 2026 +0100
New upstream version 50.4
commit 884a40e7787cb097475e8908a64ec3b41ecdaa1c
Author: Simon McVittie <smcv@debian.org>
Date: Sat Aug 22 16:08:42 2026 +0100
Update changelog
commit fc54cdcce356a0f278f5854ff63682f8693ea5fe
Author: Simon McVittie <smcv@debian.org>
Date: Sat Aug 22 16:08:13 2026 +0100
d/watch: Only watch for version 50.x on this branch
commit 65d1b8859bab8699bde8fc9b9eb3f0a8d2b1fa4b
Author: Jeremy Bícha <jbicha@ubuntu.com>
Date: Wed Aug 5 20:50:09 2026 +0200
Clean up after debhelper compat 14 and lintian 2.139.0
I left some Depends and Provides behind until lintian 2.139.0
landed in Unstable to avoid lintian warnings
commit 8fe247a25a5b773e506c3f5f442ca0b7e3d5dc97
Author: Florian Müllner <fmuellner@gnome.org>
Date: Mon Aug 3 14:01:25 2026 +0200
Bump version to 50.4
Update NEWS.
commit fef51314da83181254f540d7b994332c9ca28e84
Author: Michel Dänzer <mdaenzer@redhat.com>
Date: Fri Jun 19 15:44:56 2026 +0200
clutter/frame-clock: Use latest possible next_smooth_presentation_time_us
The target presentation time of pending frames can be not only later
than earliest possible extrapolated from the last presentation time
(when the frame explicitly targets a later refresh cycle), but also
earlier (when a previous frame missed its target cycle).
With a series of frames hitting each refresh cycle, the latter case
resulted in later frames all missing the cycle they were targetting,
and corresponding higher latency for clients using the Wayland
commit-timing protocol.
Solve this by calculating the earliest presentation time all possible
ways, and using the maximum result for next_smooth_presentation_time_us.
Fixes: 23f285f972ae ("clutter/frame-clock: Take previous target presentation time into account")
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5137>
(cherry picked from commit 6f0b92d6caa63870e3d5a7691766a4ffccf5e282)
commit 69ef9b30a0b601c7acaf3739d5a47fc230d5c8fc
Author: Marco Trevisan (Treviño) <mail@3v1n0.net>
Date: Mon Jun 17 17:19:56 2024 +0200
backends/stage-impl: Remove unneeded explicit region cleanups
We've autopointers now, so having this implies doubling the same check
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5203>
(cherry picked from commit a903a52505e33981be6c0f92ed299fa4afc59a9e)
commit fa96bf0ed397db7da3a596ed928bb07bf54fe303
Author: Marco Trevisan (Treviño) <mail@3v1n0.net>
Date: Tue May 28 17:44:06 2024 +0200
backends/stage-impl: Mark queued redraw clip op as unlikely
It's happening in the debug case only, so mark it as such
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5203>
(cherry picked from commit 1e4866f40c45c713301cdb1fc80e4bdd4ffd1078)
commit cdb748db2816c50a15ccb11d86ca1f516cb02929
Author: Marco Trevisan (Treviño) <mail@3v1n0.net>
Date: Mon May 27 21:12:44 2024 +0200
backends/stage-impl: Clamp the redraw clips to the framebuffer size
When computing the redraw clips rectangles we were using graphene
extents rounding (via "grow" Mtk rounding strategy) to be sure that
each area is properly covering the unscaled space.
However graphene's extents rounding has not any concept of maximum
allocation space and thus it may lead to generate rectangles that don't
fully fit in the framebuffer area.
Assuming of having a framebuffer 3840x2160 scaled @ 2,2018349170684814453125
An example is this rounding rectangle:
969x1734 at 12x3 (in the framebuffer scaled space)
With the current code it becomes once re-scaled:
2135x3819 at 26x6 (in the framebuffer unscaled (e.g. monitor) space
And clearly this rectangle doesn't properly fit in the framebuffer,
since its x2 would be positioned at 2135+26 (=2161, so a pixel outside).
This is not something that is generally problematic for the receiver
code, since most KMS drivers handle this properly (even though it's still
conceptually wrong to damage an area bigger than the plane size), but it
becomes a problem once such rectangle also get transformed, because due
to the nature of meta_rectangle_transform() the rectangle will also be
offset.
Following the previous example, applying a 90° rotation, it will become:
3819x2135 at 6x-1 (in the monitor space)
And now this is really a problem, because we're ending up sending to the
driver a swap region with offscreen coordinates, and that's something that
most driver do not really support, causing the KMS commit to fail with:
Failed to post KMS update: drmModeAtomicCommit: Invalid argument
So, when scaling the regions, also clamp the rectangles so that they
will fit into the framebuffer area.
In the scale_offset_and_clamp_region() case we also need to rescale the
framebuffer go to back into framebuffer space.
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3509
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5203>
(cherry picked from commit 73c65007d50e12c4a428e5e6d751d37f73bbfae5)
commit 36367efae535bb13d9081a01f19038c1d0d1ce38
Author: Marco Trevisan (Treviño) <mail@3v1n0.net>
Date: Tue May 28 10:13:17 2024 +0200
backends/native/kms-impl-device-atomic: Warn on invalid damage rects
When debugging the KMS it may be important check that the submitted
values are valid, so add some more explicit check on this to make
clearer what are the drivers expectations
[ Michel Dänzer: Adjust warning conditions to match the kernel's ]
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5203>
(cherry picked from commit ac57294c3ebd50c13b117e99aa84f9456aeca9df)
commit a9ac87f0468ffc026a6e82a326733e66d0c7493b
Author: Marco Trevisan (Treviño) <mail@3v1n0.net>
Date: Tue May 28 10:08:48 2024 +0200
backends/native/kms-impl-device-atomic: Add debug info for damage clips
Provide debug details when damage clips are submitted, so that we can
check their content when using META_DEBUG=kms since in some cases they
have been the cause for DRM request commit failures.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5203>
(cherry picked from commit 1b5625bdcb8fe52cf4288d49ba3e129b0d40a625)
commit a1ae71798ef1ab2e0d2f753f5c98b38b1039b056
Author: Boogie61 <muhammetali47961@gmail.com>
Date: Thu Jul 30 14:26:41 2026 +0000
output: Fill in mastering display metadata for HDR output
When the bt2100 color mode is enabled, only the EOTF was set on
MetaOutputHdrMetadata. The mastering display primaries, white point and
luminance range were left zero initialised by the designated initializer
and never filled in, so the HDR_OUTPUT_METADATA infoframe told the sink
to use the PQ curve without describing the mastering display at all.
Many sinks are unaffected by that, but some tone map differently when
the mastering display is left undescribed. On the panel this was found
on, a Samsung ATNA60HU06-0, it shows up as washed out content with very
low contrast, which goes away once the fields are populated.
Take the values from the colour state the frames are produced in, so
that the KMS metadata agrees with the image description advertised to
Wayland clients. MaxCLL and MaxFALL stay unset, since the content light
level of the composited scene is not known here.
Closes: https://gitlab.gnome.org/GNOME/mutter/-/work_items/4937
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5199>
(cherry picked from commit fa6b3575f4e1a43a12902ba322a00c91b38f3bcc)
commit e0fd7d67b880737d930f3b468af5fe2bed5a5fbe
Author: Jeremy Bícha <jbicha@ubuntu.com>
Date: Mon Aug 3 12:07:45 2026 +0200
releasing package mutter version 51~beta-1
commit 39ace68c254c06096fe656d1db340c139b26d265
Author: Jeremy Bícha <jbicha@ubuntu.com>
Date: Mon Aug 3 12:40:10 2026 +0200
Break gnome-shell versions older than 51 beta
commit 64e256aa27b5530ed2379ecfdb5e14d2f6e842dc
Author: Jeremy Bícha <jbicha@ubuntu.com>
Date: Mon Aug 3 12:38:42 2026 +0200
Fix some build warnings
commit ea280c13343c5197da53482fb570a1bdeb28144a
Author: Sebastian Wick <sebastian.wick@redhat.com>
Date: Sun Jul 12 03:06:50 2026 +0200
clutter/color-state-params: Set colorimetry type tag when overriding to sRGB
The PQ blending path set blending_colorimetry.colorspace without
updating the type tag from PRIMARIES to COLORSPACE. Since
ClutterColorimetry is a tagged union, writing the colorspace enum
clobbered only the lower bytes of the primaries pointer, causing a
use-after-free crash in clutter_primaries_equal.
Fixes: e9ab34262e ("clutter/color-state-params: Use output colorimetry & EOTF for blending")
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5176>
(cherry picked from commit 98ab49c1caea784c558b67a7a8c5d997f85d787e)
commit 4368367937b8a1244883d729889abf892a41087b
Author: Sebastian Wick <sebastian.wick@redhat.com>
Date: Sun Jul 12 18:01:25 2026 +0200
clutter/stage-view: Clear offscreen when invalidating pipeline
invalidate_offscreen clears offscreen_pipeline but leaves offscreen
alive. If a paint arrives before the idle handler recreates both, the
stage renders into the offscreen but after_paint tries to blit it with a
NULL pipeline, crashing in cogl_pipeline_foreach_layer.
Clear the offscreen together with the pipeline so the state is always
consistent. The idle handler already handles recreating both from
scratch.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5176>
(cherry picked from commit 65215c1dc06b1269daf1617633949d3ec56d2b56)
commit e14c14955284233927c93c70d132562f887d9baa
Author: Sebastian Wick <sebastian.wick@redhat.com>
Date: Sun Jul 12 05:21:36 2026 +0200
clutter/stage-view: Fix viewport not being set on new offscreen
When the idle handler creates a new offscreen FBO, dirty_viewport and
dirty_projection are FALSE, so setup_view_for_pick_or_paint never sets
the viewport on the new framebuffer. On monitors not at position (0,0),
this causes painting with incorrect coordinates since the default
viewport lacks the view_layout offset.
Mark both as dirty before creating the offscreen so the next paint
applies the correct viewport and projection.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5176>
(cherry picked from commit 567987a2d23912f8733199ce1d9100815fad490b)
commit 4f6084ce5dfff3da861e0ba4a309fd588f9245d4
Author: ramyayella <ramya.krishna.yella@intel.com>
Date: Tue Jun 9 17:40:06 2026 +0530
output/kms: Filter fallback modes by panel-supported refresh rates
While adding fallback modes add the modes whose refresh rate matches
with the kernel supported refresh rates.
Signed-off-by: ramyayella <ramya.krishna.yella@intel.com>
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5110>
(cherry picked from commit 73843088ed3f32aec22a17cc89269fa57bd6dbc4)
commit 0edd2d8699534fd3bbb4c161a4e65363e6c1d985
Author: Michel Dänzer <mdaenzer@redhat.com>
Date: Tue Jul 14 18:22:14 2026 +0200
kms/impl-device: Also discard inhibited KMS updates
Fixes *render-kernel-thread* tests failing randomly.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5184>
(cherry picked from commit f811e903708f11ae0a0ab1a8df23fa436d146dec)
commit ade2439b213609552667336f701de2cc1a28ab23
Author: Michel Dänzer <mdaenzer@redhat.com>
Date: Thu Jul 9 09:52:31 2026 +0200
kms/impl-device: Handle NULL crtc_frames in disarm_all_frame_sources
Prevents a crash in that case.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5170>
(cherry picked from commit 5816af5d657af6bcbf0fd6bd830bc7e34611dcfb)
commit 23e796cc0b679d75f45bd9edbdaf9ef4976fd2f6
Author: Michel Dänzer <mdaenzer@redhat.com>
Date: Thu Jun 25 11:48:21 2026 +0200
wayland/transaction: Ignore stale timestamp constraints
If the constraint is in the past, we don't need to do anything for it.
Closes: https://gitlab.gnome.org/GNOME/mutter/-/work_items/4861
v2:
* Drop comparison with next presentation time: If we don't set a
timestamp constraint, the next frame may end up being presented
earlier than expected.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5159>
(cherry picked from commit 7124ddf7e532537c0de8ba62d3a76767fdba5ff1)
commit 137094d1531844c29e34b460fdea17e7dd37fb81
Author: Michel Dänzer <mdaenzer@redhat.com>
Date: Mon Jul 6 16:44:29 2026 +0200
kms/impl-device: Handle NULL crtc_frames in _discard_pending_page_flips
Closes: https://gitlab.gnome.org/GNOME/mutter/-/work_items/4848
Fixes: 14b3d57b7d92 ("kms-impl-device: Discard pending update when discarding pending flips")
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5163>
(cherry picked from commit 5d187100e2e146511cc19269d2f1c650cc3125ab)
commit 570de65dd05e1b362fdef90dcb811c22acd8a8e2
Author: Carlos Garnacho <carlosg@gnome.org>
Date: Tue Jun 16 12:08:24 2026 +0200
clutter: Let logical key events from IMs go through without a device
These events are not tied to a hardware device, and poking at input
capabilities of keyboard devices is less of an usecase, so it does not
seem to make a lot of sense to create a virtual keyboard device for
these.
Rely on clutter_event_source_device() return value being nullable, and
let events with the IM flag be propagated without a source device.
Closes: https://gitlab.gnome.org/GNOME/mutter/-/work_items/4853
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5121>
(cherry picked from commit 2710ddc8a2515a0a77afde4cb9a70a4b14c72f14)
commit 514cd59e5f27f6821225d31b801526250a7b4c39
Author: James Railton <jarail@gmail.com>
Date: Tue Jun 16 15:03:51 2026 -0400
tests/stage-views: Add fractional view position test
Add a test with two monitors where the second one is fractionally scaled
at a logical position whose device offset is fractional
(767 * 1.5 = 1150.5), in a stage whose scaled size is also fractional
(1367 * 1.5 = 2050.5). Two view-aligned solid color actors and a texture
displaying alternating single device pixel rows are painted, and
individual pixels of the framebuffer are checked: actor boundaries must
land on the exact device pixel rows, the view's first and last rows must
be covered, and the texture rows must stay pure black and white.
The same content is also captured through
clutter_stage_paint_to_framebuffer_clipped() into an offscreen, which -
unlike an onscreen view - is y-flipped, and checked the same way, so
both paint paths and both viewport flip conventions are covered.
A coverage-only check would not catch this: a pure half-pixel shift
combined with the rasterizer's edge tie-breaking can reproduce identical
solid-color coverage, so the texture is sampled under linear filtering,
where a sub-pixel offset blends the alternating rows to gray instead.
https://gitlab.gnome.org/GNOME/mutter/-/issues/4451
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5115>
(cherry picked from commit 0a7b8b436e4c61144c7615866f433b5eddba4e16)
commit 08a9b2283c61995374c3b36166a3982f02552d69
Author: Jeremy Bícha <jbicha@ubuntu.com>
Date: Mon Aug 3 12:06:43 2026 +0200
debian/libmutter-51-0.symbols: Update
commit 00028910b76c172e080648c6503f629d481c548d
Author: Jeremy Bícha <jbicha@ubuntu.com>
Date: Mon Aug 3 07:35:38 2026 +0200
Update minimum gsettings-desktop-schemas
commit 94e225b72a900c7e6dfa266109bf5d5e8542c2a7
Author: Jeremy Bícha <jbicha@ubuntu.com>
Date: Mon Aug 3 07:31:31 2026 +0200
Update debhelper compat to 14
commit ecbdd19bc961f86354f07226f2f113924bf4164d
Author: Jeremy Bícha <jbicha@ubuntu.com>
Date: Mon Aug 3 07:26:52 2026 +0200
Refresh patches
commit 5aa24e8c3958b3105666dde90b4a01956add81d9
Author: Jeremy Bícha <jbicha@ubuntu.com>
Date: Mon Aug 3 06:09:03 2026 +0200
New upstream release
commit 9a0ac91d8ddc92827ad1453a8d35a08c7ad65e3b
Merge: 82b3d44c 4f4375c3
Author: Jeremy Bícha <jbicha@ubuntu.com>
Date: Mon Aug 3 12:25:01 2026 +0200
Update upstream source from tag 'upstream/51_beta'
Update to upstream version '51~beta'
with Debian dir 04fdc31d721a16c36f192265469d885fccd8257c
commit 36fc7e2e7752bf36f4f891d7f5ea4335dbcb661f
Author: James Railton <jarail@gmail.com>
Date: Tue Jun 16 15:02:00 2026 -0400
clutter/stage: Compensate fractional viewport in framebuffer captures
clutter_stage_paint_to_framebuffer_clipped() sets up its target the same
way per-view painting does - the shared stage projection plus a viewport
derived from origin * scale and stage_size * scale - and has the same
rounding problem: it passed the unrounded floats to
cogl_framebuffer_set_viewport(), which truncates them to integers at GL
flush. A capture whose origin * scale is fractional (the monitor
screen-cast source passes the monitor's logical layout and scale
directly, so a fractionally-positioned monitor qualifies) is therefore
shifted by up to half a pixel and stretched, the same blur the previous
commit fixed on the monitor itself - except here it lands in the
recording, which then no longer matches the screen.
Use clutter_stage_calculate_viewport_and_projection() here too, so the
captured framebuffer gets the same integral viewport and compensating
projection.
https://gitlab.gnome.org/GNOME/mutter/-/issues/4451
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5115>
(cherry picked from commit 308a0fccb0238db6006e2da6eb119f5250f36050)
commit 97e61894fccc399811a67a71d5bed5fa5dc17361
Author: James Railton <jarail@gmail.com>
Date: Tue Jun 16 15:00:46 2026 -0400
clutter/stage: Compensate fractional viewport remainders in the projection
The stage to view transform is exact in view-local terms:
fb = (stage - view_position) * view_scale.
_clutter_stage_maybe_setup_viewport() expresses it as the shared stage
projection plus a per-view viewport, which turns the viewport offset into
view_position * view_scale and the viewport size into stage_size *
view_scale - neither of which is necessarily integral. A logical monitor
at y=489 with a scale of 1.5 has a device offset of 733.5, and a stage
spanning 1367 logical pixels covers 2050.5 device pixels on such a view,
while viewports can only carry integers. roundf() silently dropped both
remainders, shifting all rasterization on such views by up to half a
device pixel and stretching it by a fraction of a pixel across the stage.
This had two kinds of user-visible consequences:
Every view with a non-integral device offset rendered blurred: the
sub-pixel shift makes meta_actor_painting_untransformed() fail for every
surface on the view, silently demoting them from NEAREST to LINEAR
filtering and resampling them off the pixel grid. Supported scale values
are floats chosen to make the logical monitor size integral (e.g.
1.3333333730697632), for which position * scale is integral for no
non-zero position at all, so monitors at such scales were blurred at
every placement except the layout origin - which also rules out fixing
this by constraining positions in the configuration layer.
At an offset remainder of exactly 0.5 (odd positions at 150%, positions
2 (mod 4) at 125%), the view-aligned geometry's bottom or right edge
additionally lands exactly on pixel centers, where the rasterizer's fill
rules drop the boundary row, so the view's last pixel row is never
rendered by anything. On views that render through an intermediate
offscreen (e.g. HDR, where the color state needs mapping), the offscreen
is persistent and that row accumulates stale window content indefinitely.
Factor the rounding and compensation into a helper that keeps the
integral parts in the viewport and folds the remainders into the
projection as a clip space scale and translation, so the combined
transform stays exact and view-aligned geometry lands on exact
framebuffer pixel coordinates for any logical monitor position. With zero
remainders the projection passes through unchanged, leaving integral
configurations bit-identical.
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/4451
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5115>
(cherry picked from commit a79b894122706a909e8b6b3452bfa6369a8515d4)
commit 82b3d44cf8c40ca87ffb99b5edbd8cc65ff21879
Merge: ae518983 ed0d6418
Author: Simon McVittie <smcv@debian.org>
Date: Mon Aug 3 10:54:45 2026 +0100
Merge branch 'debian/forky' into debian/latest
commit ed0d64184bb490d9cd8f2ea3793ea08186c8d087
Author: Simon McVittie <smcv@debian.org>
Date: Mon Aug 3 10:52:01 2026 +0100
Release to unstable
commit ae518983b6d5aa2695308ace5ab59ae143308127
Author: Simon McVittie <smcv@debian.org>
Date: Sun Aug 2 19:52:50 2026 +0100
Revert "d/control, d/gbp.conf: Branch for forky"
This reverts commit 62bd819129d22cf02ff28e2363aae733f476c438.
commit 37566c9ee4783fce8f85d6b00bd2ee32bc0b2830
Author: Simon McVittie <smcv@debian.org>
Date: Sun Aug 2 18:06:56 2026 +0100
Update changelog
commit c1827b72a5f24b1a8f5e3b8a377a7f7247490f92
Author: Simon McVittie <smcv@debian.org>
Date: Sun Aug 2 18:01:52 2026 +0100
d/patches: Refresh
Drop patches that were applied upstream.
commit 89ea36dcbce586c826ce74febb18d84a737a8f28
Author: Simon McVittie <smcv@debian.org>
Date: Sun Aug 2 18:00:53 2026 +0100
New upstream release
commit 13ddbfadf9590a9fab0a47a3e8d8982e9e60508f
Merge: 795b27bb 639f883d
Author: Simon McVittie <smcv@debian.org>
Date: Sun Aug 2 18:00:53 2026 +0100
Update upstream source from tag 'upstream/50.3'
Update to upstream version '50.3'
with Debian dir b3e726caa465e525165cd1ab14cb37bac38043ae
commit 639f883d6728ae7f175dabbe47e2a71a57bdcf24
Merge: e067ca5e a9558493
Author: Simon McVittie <smcv@debian.org>
Date: Sun Aug 2 18:00:27 2026 +0100
New upstream version 50.3
commit cfe8a46ddff59f0f2af497cfbcb5e32c581cad10
Merge: cdf15276 795b27bb
Author: Simon McVittie <smcv@debian.org>
Date: Sun Aug 2 17:38:06 2026 +0100
Merge branch 'debian/forky' into debian/latest
commit 795b27bb62c950af01565b84c176af4da5b44b85
Author: Simon McVittie <smcv@debian.org>
Date: Sun Aug 2 17:23:19 2026 +0100
Release to unstable
commit c54d8b8809a4c4e94ef1644c2eb472780683c5d6
Author: Simon McVittie <smcv@debian.org>
Date: Sun Aug 2 16:31:28 2026 +0100
Update changelog
commit f938433940cc4d2cd84cd9a483bcaeb18c8ebb24
Author: Simon McVittie <smcv@debian.org>
Date: Sun Aug 2 14:44:27 2026 +0100
Stop setting udevdir dynamically
Since trixie, we can expect that it will always be /usr/lib/udev.
commit 2678e826c7b7adc4c0a832393131e2db778a3e43
Author: Simon McVittie <smcv@debian.org>
Date: Sun Aug 2 14:43:55 2026 +0100
d/mutter-common.install: Sort alphabetically
commit 8e176b78929cf73a538fda0252485ed5b0780dcf
Author: Simon McVittie <smcv@debian.org>
Date: Sun Aug 2 14:42:06 2026 +0100
Use debhelper ${env:...} substitutions instead of dh-exec
commit de8cd411a5e689fb9abd11acc1846da8345aba13
Author: Simon McVittie <smcv@debian.org>
Date: Sun Aug 2 12:14:00 2026 +0100
Update changelog
commit 465fac56ee0e86841909d588dcc1ef44b6d374d5
Author: Simon McVittie <smcv@debian.org>
Date: Sun Aug 2 12:12:54 2026 +0100
d/patches: Add patch from upstream 51~alpha to fix FTBFS with newer Pango
Closes: #1143340
commit 3feaadcfba2f2919e9925efae210bf10b1e4357d
Author: Simon McVittie <smcv@debian.org>
Date: Sun Aug 2 12:12:29 2026 +0100
d/patches: Mark two patches as released upstream in 51~alpha
commit 62bd819129d22cf02ff28e2363aae733f476c438
Author: Simon McVittie <smcv@debian.org>
Date: Sun Aug 2 12:07:02 2026 +0100
d/control, d/gbp.conf: Branch for forky
The debian/latest branch now contains GNOME 51 prereleases for
experimental.
commit af617ce242f5eb6e5e3cd184331d370f57baa37e
Author: Michel Dänzer <mdaenzer@redhat.com>
Date: Wed Jul 8 15:01:36 2026 +0200
screen-cast-stream-source: Handle NULL cursor renderer
meta_backend_get_cursor_renderer may return NULL now.
(cherry picked from commit 547f1db2838dc09a189c645d6d679191562092e5)
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5189>
commit 764fdcb86eb7b27c7218d60a27bbbc8ce034d8d5
Author: Vasil Pupkin <3abac@3a.by>
Date: Wed Jul 8 21:25:51 2026 +0000
Update Belarusian translation
Co-authored-by: Vasil Pupkin <3abac@3a.by>
commit a9558493a3efce4183a221aae4681ccba4fa76a7
Author: Florian Müllner <fmuellner@gnome.org>
Date: Tue Jun 30 15:45:34 2026 +0200
Bump version to 50.3
Update NEWS.
commit 07461c96eb4e7e35a6ee795a3270b917cff33a1c
Author: Sundeep Mediratta <smedius@gmail.com>
Date: Tue Jun 30 07:48:42 2026 -0400
core/window: Refresh target monitor on monitor changes
Windows of type DESKTOP and override_redirect skip the normal monitor
refresh path during monitor reconfiguration, which can leave target_monitor
stale after hotplug or mode changes.
Re-sync the desktop window target monitor from the updated main monitor
so later constraint code does not follow a stale logical monitor reference.
Fixes: 6bee1e5b58 ("window: Introduce 'target monitor' concept")
Closes: https://gitlab.gnome.org/GNOME/mutter/-/work_items/4891
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5151>
(cherry picked from commit 371973f3d05db3f7663dada09a7197ed3f1142af)
commit 76903a66419dfa6df96d928c9f8f24df53eed83a
Author: Carlos Garnacho <carlosg@gnome.org>
Date: Wed Jul 1 10:32:51 2026 +0200
backends/native: Ensure GPU data when asking for gbm_device
If the native cursor renderer is created at a time that a MetaGpuKms got
its MetaRendererNative's GPU data collected by free_unused_gpu_datas(), it
will be asking for a gbm_device in order to figure out whether using the
cursor plane is an option, but triggering a crash since the missing GPU data
would cause a NULL pointer dereference.
Since the cursor renderer is asking for a gbm_device, it makes sense to
make the MetaRendererNative get out of its way to get one. Ensure to create
GPU data for it, or sanely bail out if it could not be created on the spot.
Closes: https://gitlab.gnome.org/GNOME/mutter/-/work_items/4890
Fixes: de5ee29e94 ("backends/native: Initialize HW cursor support right away")
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5153>
(cherry picked from commit def264ecf556784035ddc48c1ba67b2c327f8a79)
commit c0830de6ce93f310a873412533be48346fea350e
Author: Michael Catanzaro <mcatanzaro@gnome.org>
Date: Tue Jun 2 15:13:36 2026 -0500
clutter: Fix build with pango master
Pango defines autocleanups since pango!908.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5102>
(cherry picked from commit ba64e055b5159a3acd5b4e4bc3d381066b26c62c)
commit e68c3a848b5e2f6be1c31a51f697f73e33d62d9f
Author: Jonas Ådahl <jadahl@gmail.com>
Date: Mon Jun 29 15:59:14 2026 +0200
stream-source/virtual: Don't assume there is a cursor renderer
There might not be one, depending on various circumstances, so add a
check.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5143>
(cherry picked from commit 8abdae0b00b035cca8fb47d6ff9e3f411c2f0f20)
commit e108fc794a0a2ea88a9d31b4449bac20baa7d467
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 df76315c6b9ff9ddd4b5828808798c5fe8e8e9a3
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 f416478f7f0d61196f16132e6593ab59792b41ea
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 df95e7f72e06b77718fd96d28164a3733bc6771c
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 dd90487fc82bd13de85e9b0edff3a34272e5fab8
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 2dbde4afd74a4f31bbf21147195d9bb5b6471979
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 a4a851d417cd098e22ae3362fdb705eea7a6b860
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 ef6a55ed1c329a7e54667a01630f5290d7ec41fd
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 11a743198cdf08a56ce33a61acff340702838ea9
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 588109ca7b20cd80ed36f2db7b529a6d4ea6a9cf
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 a1cac93771f0e0f1d7b345b458edf20f1b2c0d87
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 b9401b76de7142838d5a56d03359a103834f14fc
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 1b574793a72fa0fac0ddd3e7ade1fe6533bdab07
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 1efb909a015cce75ce354aa8e503001436b1b916
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 505a9720aed57cdbd6416d7ee1b4df913863b3b1
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>
(cherry picked from commit b7a2dad45a76498bb427f8fb856084faa248601c)
commit 43b8c7096b049636645a54f87c3b09c07e3d1fe3
Author: Michel Dänzer <mdaenzer@redhat.com>
Date: Sat Jun 6 15:48:55 2026 +0200
clutter/frame-clock: Log presented time delta between frames
This is useful for spotting missed display refresh cycles between
frames, in particular but not only when frames didn't have target
presentation times.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5127>
(cherry picked from commit ba04771f3c55b80e6710f35fb094ae58982174d2)
commit 985401faf5739fe80e7f3e44cf8c956835c7a07c
Author: Michel Dänzer <mdaenzer@redhat.com>
Date: Sat Jun 6 15:48:50 2026 +0200
clutter/frame-clock: Always log presented time
We previously didn't log it for frames which had a target presentation
time and hit the corresponding target display refresh cycle, which was
confusing.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5127>
(cherry picked from commit c3a3b84cf052bb39f060fbf693355f32ffdef128)
commit 2eb05bb11c79afac2654b2417dbf832ecbbaec3c
Author: Michel Dänzer <mdaenzer@redhat.com>
Date: Mon Jun 15 17:44:10 2026 +0200
screen-cast/stream-src: Fix Y scaling factor in _accumulate_redraw_clip
Fixes: 7ce731f8010d ("screen-cast/stream-src: Scale and crop redraw clip to stream layout")
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5119>
(cherry picked from commit 152d5a8772029ebdc463822e5b1dfc27376208d1)
commit fdf4f1770f0e6dea1dad0d040409ff2990dfddaa
Author: Jonas Ådahl <jadahl@gmail.com>
Date: Mon Jun 8 13:15:58 2026 +0200
tests/wayland-client-tests/ycbcr: Initialize array
This fixes an uninitialized warning:
../src/tests/wayland-test-clients/ycbcr.c|143 col 21| error: ‘planes[0]’ may be used uninitialized [-Werror=maybe-uninitialized]
|| 143 | pixel = planes[0] + (y * strides[0]) + x;
|| | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5118>
(cherry picked from commit ad740d9798bb9dc5e15c46ebf3ca4c374e9f3a8b)
commit 88caf4d561ff47777e7de20ad3c68e6efcf32329
Author: Jonas Ådahl <jadahl@gmail.com>
Date: Mon Jun 8 13:15:26 2026 +0200
clutter/grid-layout: Use g_newa0()
This fixes a uninitialized warning:
../clutter/clutter/clutter-grid-layout.c|974 col 3| error: ‘<unknown>’ may be used uninitialized [-Werror=maybe-uninitialized]
|| 974 | g_sort_array (spreading,
|| | ^~~~~~~~~~~~~~~~~~~~~~~~
|| 975 | n_requested_sizes, sizeof (guint),
|| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|| 976 | compare_gap, sizes);
|| | ~~~~~~~~~~~~~~~~~~~
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5118>
(cherry picked from commit d05958ca5ada020e13ebcc9628a669a895968822)
commit 7329208f38a8f7382e1d560700a3c9098fb8c6a5
Author: Andre Nijman <andre.perth.2010@gmail.com>
Date: Mon Jun 8 13:51:28 2026 +0800
surface-actor: Clip the redraw clip region to the texture bounds
set_unobscured_region() already intersects the region it stores with the
texture's preferred-size bounds, but set_clip_region() stored the redraw
clip verbatim. A clip that extends past the texture therefore kept the
shaped texture's clip region non-empty even when the displayed texture
lies entirely outside it, so the empty-clip early-out in
meta_shaped_texture_paint_content() fired less often than it could.
Intersect the clip with the same bounds, factored into a shared helper.
The painted output is unchanged: do_paint_content() already clamps every
painted rect to the content rect, which equals these bounds, so clip area
outside the texture never produced pixels.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5108>
(cherry picked from commit 1eecd7890c2229eba5cd9a8f6a8aa4280f2cf129)
commit 246b034eb5dd4e2cbf8da40c535a29fe1b65f6da
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>
(cherry picked from commit 2bae67c21f24cd7d60d4770a0754133f7614f0bb)
commit da0a7d7f05c4a8bc86a2eb7ccc7a52cc722bb6f6
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>
(cherry picked from commit 3fd1cfa6257a43a2b4cf855db8d22772c7844e17)
commit b2c85fdaaa96ae9d7ce36696db874b3700821ef4
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>
(cherry picked from commit 96ec54b0b1718b9be40cfbd01d11776c4adf10fb)
commit 257abc6d93f888f622aea23fb2a01f454847e8df
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>
(cherry picked from commit 8e5f7b125824df34fc5c364ace2c0e130ebd7cfa)
commit 75198478079a11420b5ca9a9d8bf72a7d48ddfd8
Author: Michel Dänzer <mdaenzer@redhat.com>
Date: Wed Jun 3 10:27:00 2026 +0200
tests/wayland: Add fractional scaling test repeated-preferred-scale case
It creates a wp_fractional_scale_v1 object, destroys it, and creates a
second one. It checks that the preferred_scale event is sent for both
of them.
This would have caught the issue fixed by the previous commit.
v2: [Robert Mader]
* Add Red Hat copyright line in new test client.
* Remove stray newline.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5103>
(cherry picked from commit e63e4e918680d1a4272332c68b5445ee58ed9d28)
commit f41e0ee10b6f72e205996a780c02232976fcfbc6
Author: Michel Dänzer <mdaenzer@redhat.com>
Date: Wed Jun 3 10:23:22 2026 +0200
wayland/fractional-scale: Ensure preferred_scale event is sent
Need to clear the recorded surface scale when a new
wp_fractional_scale_v1 object is created, or we may never send the
preferred_scale event for it.
Closes: https://gitlab.gnome.org/GNOME/mutter/-/work_items/4834
Fixes: 305931e2dd72 ("wayland: Implement fractional_scale_v1 protocol")
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5103>
(cherry picked from commit 86ee97171858da7193195869a2d1395150feeba3)
commit c3fdb88a6fb35b1b469a187396b9c8a2afe68935
Author: Jonas Ådahl <jadahl@gmail.com>
Date: Thu May 28 12:37:07 2026 +0200
wayland-surface-state: Always hold a reference to the buffer
Prior to this, we'd sometimes own a reference, and sometimes not; but
could end up with both no buffer destroy handler and no reference, which
meant we disposed a reference to the buffer we didn't own.
Fix this by simplifying buffer reference ownage by always owning one.
We'll still get the signal callback for when a buffer is destroyed,
since it's tied to the lifetime of the wl_resource, not
MetaWaylandBuffer.
Fixes the following crash:
0) g_type_check_instance()
1) ???
2) g_signal_emit_valist()
3) g_signal_emit()
4) meta_wayland_buffer_destroy_handler()
5) ???
6) wl_client_destroy()
7) ???
8) wl_event_loop_dispatch()
9) wayland_event_source_dispatch()
10) ???
11) ???
12) g_main_loop_run()
13) meta_context_run_main_loop()
14) main()
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5097>
(cherry picked from commit a164c54e63a3fc64352b32ec5e65a165d20c1c49)
commit 918da17b0be2286382772ee38d53311b0be146b4
Author: Jonas Ådahl <jadahl@gmail.com>
Date: Mon Jun 1 22:48:44 2026 +0200
cursor/wayland: Don't hold a ref on the surface
The surface owns a reference to the Wayland cursor instance tied to it,
so if the cursor itself has a reference back to the surface, we end up
with a circular dependency, causing a memory leak. Fix this by making
the Wayland cursor instance only have a weak pointer to the surface, and
handle the surface disappearing gracefully.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5097>
(cherry picked from commit e8d998b52af31347d2ce83c39ae7eaa4c4d28586)
commit 7452db01c0a7521c89154f23fc3d5b3d75a6b742
Author: Jonas Ådahl <jadahl@gmail.com>
Date: Mon Jun 1 22:50:23 2026 +0200
wayland-cursor-surface: Chain up the constructed vfunc
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/5097>
(cherry picked from commit 275b12319274fe194ce25d6f82acea421ccb18f7)
Among the 5 debian patches available in version 50.4-1 of the package, we noticed the following issues: