33394 Commits

Author SHA1 Message Date
Florian Müllner
eb8f2398d2 dbusmock/logind: Mock GetUser method
It will be needed by gnome-shell.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4270>
2025-02-13 05:30:24 +00:00
Florian Müllner
0d86790059 ci: Install gjs from git
While we don't actually require the newer version, there was some
fallout from its change to optimize GObject property accesses by
calling the getter function.

Including that change in the CI image (and therefore derived toolbox
images) should give it more test exposure, so we can hopefully
find remaining issues (if any) before the release.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4268>
2025-02-12 21:16:14 +01:00
Michel Dänzer
ba3b709e08 cursor-renderer/native: Skip init_hw_cursor_support_for_gpu for headless
By definition, headless means no HW display output, so initializing HW
cursor support makes no sense.

Fixes hitting the g_warning in tests when there's a GPU device
available, breaking them.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4259>
2025-02-12 08:36:54 +00:00
Alban Browaeys
99dbcf1b8c input-capture/session: Disconnect on_keymap_changed on session finalize
When Input Capture was enabled on Input Leap server startup and then
finalized when Input Leap server was stopped, switching keymap was
still triggering its on_keymap_changed callback, but on a freed session
thus triggering use after free a segfault.

Fixes: 2fb3bdf77 - input-capture: Hook up capturing of events to active session
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3360
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4257>
2025-02-12 04:11:01 +00:00
Corentin Noël
2da7805f58 meson: Use library instead of shared_library
Allow to theoretically build mutter statically.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4244>
2025-02-11 09:55:07 +00:00
Dudemanguy
e078147f7d wayland: Support presentation-time version 2
It is simply a matter of checking the version and always sending back
the refresh rate of the display if we have version 2 of the protocol.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4227>
2025-02-11 09:37:32 +00:00
Dudemanguy
271c712146 wayland: Fix refresh interval reporting in presentation-time version 1
Version 1 of the presentation protocol requires that 0 be sent for the
refresh rate for variable refresh rate. Fix this by checking the mode
during the presentation event.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4227>
2025-02-11 09:37:32 +00:00
Michel Dänzer
f459472cfe cursor-renderer/native: Probe formats supported by cursor planes
Probe all RGBA 8888 variants.

If there's a GBM device, prefer a format also supported by GBM, if any.
Fall back to dumb BOs otherwise.

This allows the HW cursor to work correctly using BGRA8888 on s390x.

v2:
* Rename get_cursor_format_info → find_cursor_format_info.
* Log device path if we can't find any suitable cursor plane format.
v3:
* Split cursor_planes_support_format helper out of
  find_cursor_format_info to make logic clearer. (Sebastian Wick)

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4255>
2025-02-11 08:09:57 +00:00
Michel Dänzer
7c447b2627 cursor-renderer/native: Store formats in MetaCursorRendererNativeGpuData
Instead of hard-coding them everywhere.

Preparation for next commit, no behaviour change intended.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4255>
2025-02-11 08:09:57 +00:00
Michel Dänzer
7e4cae2f91 cursor-renderer/native: Pass destination format to scale_and_transform
Preparation for next commit, no functional change intended.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4255>
2025-02-11 08:09:57 +00:00
Michel Dänzer
ad754af151 cursor-renderer/native: Unpremultiply for color state transformation
Without doing this, a non-linear color state transformation could result
in premultiplied colour values larger than the alpha value, which
manifested with artifacts such as parts of the cursor shining brighter
than SDR white (with HDR enabled).

This was reported in the GNOME Shell Matrix room on August 8th 2024, and
I later hit it myself.

v2:
* Fix add_pipeline_snippet function formatting. (Sebastian Wick)

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4224>
2025-02-07 05:39:22 +00:00
Jeremy Bícha
c945826a69 gdctl: Fix manpage typo
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4254>
2025-02-07 03:21:57 +00:00
Jeremy Bícha
705b0845da tests: Fix bash shebang
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4253>
2025-02-06 21:40:04 -05:00
Martin
0605f35a67 Update Slovenian translation 2025-02-05 18:30:58 +00:00
Nick Diego Yamane
3ca7539869 wayland/xdg-toplevel-drag: Do not set grab actor names for window drags
Those names (name and accessible-name) don't seem to be that useful
after all, so get rid of them, which simplifies the window drag grab
setup impl.

Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3877

Signed-off-by: Nick Diego Yamane <nickdiego@igalia.com>
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4220>
2025-02-05 15:39:32 +00:00
Peter Hutterer
65db49cafa core: Don't show the pad mode button group if we only have a single group
Only a tiny number of tablet pads that have more than one mode
group, everyone else has one mode toggle button and one group.
Let's not display "Group 0" for everyone if (almost) no-one has a Group
1 anyway.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4248>
2025-02-05 13:21:54 +00:00
Peter Hutterer
751277a7ef virtual-input-device/native: Drop the separate "seat" property
The "seat" property is already used by the parent
ClutterVirtualInputDevice - re-using this property means the parent's
propery never gets set so clutter_virtual_input_device_get_seat()
returns NULL.

This causes mutter to crash if a tablet pad sends a key event via a pad
ring or strip.

Since this type is only ever constructed with a MetaSeatNative as seat
we can extract that object through the parent and drop our property.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4247>
2025-02-05 12:37:44 +00:00
Florian Müllner
502e762ad0
Bump version to 48.beta
Update NEWS.
2025-02-05 12:02:35 +01:00
Bilal Elmoussaoui
581607f5f1 clutter: Update keyname table header
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4198>
2025-02-04 13:50:50 +01:00
Bilal Elmoussaoui
ce6a321da2 clutter: Ignore duplicated Break keysum
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4198>
2025-02-04 13:50:50 +01:00
Bilal Elmoussaoui
89d85a809b clutter: Update keysyms header
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4198>
2025-02-04 13:50:50 +01:00
Alberto Ruiz
c9612723f9 build: Remove all perl scripts from the build
replaced gen-keyname-table.pl and clutter-keysyms-update.pl with a
python implementation to remove the need for perl in the build stage

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4198>
2025-02-04 13:50:50 +01:00
Florian Müllner
25277c33a3 ci: Install GDM from git
The login-screen schema gained new keys that are needed for
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3558

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4242>
2025-02-04 11:51:54 +01:00
Jonas Ådahl
01c9c428b7 tests: Add remote desktop tests
This requires a newer libei, for ei_ping.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4210>
2025-02-04 17:38:32 +08:00
Jonas Ådahl
e6e725591e tests/remote-desktop-utils: Add libei helpers
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4210>
2025-02-04 17:27:19 +08:00
Jonas Ådahl
25fc60cdc5 tests/test-utils: Add command watcher helper
This can be used to allow passing commands via stdout from tests.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4210>
2025-02-04 10:28:19 +08:00
Jonas Ådahl
7b0a65d728 tests/test-utils: Pass subprocess flags when launching test executable
Will be used to create stdin/stdout pipes.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4210>
2025-02-04 10:28:19 +08:00
Jonas Ådahl
3b1067e783 remote-desktop-session: Only add configured streams as viewports
Otherwise we risk adding streams that don't yet have a virtual monitor.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4210>
2025-02-04 10:28:19 +08:00
Jonas Ådahl
14eedb38df eis-client: Only remove MetaEisDevice when eis_device is removed
When we recreate devices, or unbind device classes, don't remove the
device from the hash table and free MetaEisDevice quite yet - only do so
when the eis_device is actually removed.

Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3839
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4210>
2025-02-04 10:28:19 +08:00
Jonas Ådahl
4d9a818321 eis: Don't warn on unhandled EIS event types
They are expected to be handled by libeis if we're not, so don't warn
about that.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4210>
2025-02-04 10:28:19 +08:00
Jonas Ådahl
5708c6c5d1 dbus-session-manager: Generate session IDs that one doesn't need to escape
This makes it easier to deal with in test cases that uses
g_shell_parse_argv().

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4210>
2025-02-04 10:28:19 +08:00
Philip Withnall
c250f602bd clutter/actor: Remove transitions when removing an effect
If there are any in-progress transitions on any properties of the
effect, these will cause a crash next time they tick and update, as they
will try to access a `@effects.${effect_name}.${property_name}` property
on the `ClutterActor` which no longer resolves to an effect. In some
cases this will be because `priv->effects` itself is now `NULL` on the
`ClutterActor`.

This can be triggered by rapidly toggling screen time limits on and off
in gnome-shell with a low screen time limit which has already been
reached for the day. It will alternately add a desaturation effect and
fade-in transition, then remove the effect, then the transition will
update and crash.

Avoid this by removing relevant transitions when removing an effect.

Do the same for the other two groups of metas: constraints and actions,
as they will be subject to the same bug (under different reproducer
conditions). And the same for when any of these three meta groups are
cleared, as that could also trigger the same bug.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8168
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4222>
2025-02-03 15:14:51 +00:00
Jonas Ådahl
b674048184 gdctl: Allow setting color mode
This allows configuring a monitor to enter BT.2100 a.k.a. HDR mode.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4192>
2025-02-01 22:46:09 +00:00
Jonas Ådahl
53ae155e03 gdctl: Show color mode
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4192>
2025-02-01 22:46:09 +00:00
Jonas Ådahl
23ab763be0 gdctl: Add None friendly named enum helper to create from string
If the string is None, don't create a named enum instance.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4192>
2025-02-01 22:46:09 +00:00
Jonas Ådahl
d855623fb4 Replace HDR debug toggle with o.g.M.DisplayConfig API
HDR being enabled was controlled by toggling a property on
org.gnome.Mutter.DebugControl, which affected how the color space and
HDR metadata of the output was configured. Replace this with a higher
level MetaMonitor / MetaOutput level "color mode" enum, that is also
reflected in the monitor configuration API.

This enum is then used to derive the color space and HDR metadata at the
lower level where it matters. The ForceHDR debug control property is
still left there, as it only affects the color space and transfer
function of the view related to a monitor.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4192>
2025-02-01 22:46:09 +00:00
Jonas Ådahl
2fa0183a95 kms/connector: Add API to check color mode support
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4192>
2025-02-01 22:46:09 +00:00
Jonas Ådahl
0f9c9fdc20 monitor-config-manager: Put finding relevant configs into helper
Finding configurations relevant for inspiration when creating a new one
can be useful for finding more things to inherit from previous
configurations than the scale, so put the configuration gathering code
in a helper.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4192>
2025-02-01 22:46:09 +00:00
Jonas Ådahl
0f200efc6d monitor-config-manager: Rename helper finding logical monitor
It doesn't get a monitor, but a logical monitor, so name it according to
that.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4192>
2025-02-01 22:46:09 +00:00
Jonas Ådahl
654d75b841 monitor-config-manager: Fix indentation
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4192>
2025-02-01 22:46:09 +00:00
Jonas Ådahl
a38f9c2d48 gpu: Don't include monitor manager header
Doing so pulls in too much, causing potential header include order
conflicts.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4192>
2025-02-01 22:46:08 +00:00
Jonas Ådahl
bfa0f3e2ab output: Fix include order
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4192>
2025-02-01 22:46:08 +00:00
Jonas Ådahl
1c4b1096a3 tools/get-state: List color standard names instead of enum values
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4192>
2025-02-01 22:46:08 +00:00
Jonas Ådahl
a39e941f91 DisplayConfig: Advertise monitor color standard support
It'll be used to allow Settings to know whether it can enable HDR or
not.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4192>
2025-02-01 22:46:08 +00:00
Jonas Ådahl
f1e497acfa monitor: Add API to list supported color modes
Available modes are 'default', which is always added, and BT.2100,
which is added if the BT.2020 color space, and the PQ transfer function,
is supported by the output.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4192>
2025-02-01 22:46:08 +00:00
Olivier Fourdan
fc6d79eda9 keybindings: Check modifier masks one by one
Commit 48d070dae changed the logic to compare the modifiers mask as a
whole.

Unfortunately, that does not work with all combinations of modifiers, as
some may not be reported when the ISO_Next_Group key is notified.

Revert to the original logic which is to compare against each modifier
mask individually.

Fixes: commit 48d070dae - keybindings: Check for ISO_Next_Group keysym
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4237>
2025-01-31 12:47:45 +01:00
Olivier Fourdan
48d070dae7 keybindings: Check for ISO_Next_Group keysym
In process_iso_next_group(), we would use try to match mask and keycode
of ISO_Next_Group to tell whether the key combo has been activated.

That works on X11, but not on Wayland with the native backend, because
the keycode does not match.

But we do not need to go all through that burden to match the key combo
we could just use the keysym instead, which would work even when there
is no physical key for ISO_Next_Group.

All we need to do is check whether the symbol is ISO_Next_Group and the
modifier mask matches, which simplifies the code as well.

(Note that we still need to keep the resolved iso_next_group_combo
key combo around because the X11 backend grabs that key combo.)

Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3883
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4232>
2025-01-30 16:52:56 +00:00
Florian Müllner
1463ddde66 ci: Use sudo to run pip install
We can't assume the script is run as root, so request the required
privileges where needed.

Fixes: 6bd76eec0c ("ci: Use common-dependencies script to install argcomplete")
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4234>
2025-01-30 16:14:39 +01:00
Florian Müllner
0db235b7e9 ci: Fix warning during image build
It's common to terminate a list with an unset variable like `$NULL`,
but `$(NULL)` tries to run `NULL` as command instead, whoops.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4233>
2025-01-30 15:33:58 +01:00
Florian Müllner
6bd76eec0c ci: Use common-dependencies script to install argcomplete
It is a dependency of the new gdctl tool, and therefore no longer
confined to tests. Install it via the common-dependencies script,
so that the dependency is also satisfied for gnome-os and systemd
system extensions.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4233>
2025-01-30 14:53:43 +01:00