Commit Graph

33490 Commits

Author SHA1 Message Date
6c05ec7ded Revert "clutter: Drop CLUTTER_DRIVER env variable"
This reverts commit 7d376dfddc.

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

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4312>
2025-03-02 10:06:46 +00:00
9d5f8d464e Revert "cogl: Drop Rendererer.set_driver"
This reverts commit 6c22b7faba.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4312>
2025-03-02 10:06:46 +00:00
a623a839fd Update Hebrew translation 2025-03-02 09:43:08 +00:00
86b326ff94 Update Georgian translation 2025-03-02 08:00:11 +00:00
5f11c660bf Update French translation 2025-03-01 22:20:36 +00:00
5a7ec6791d wayland: Move window before tiling/maximizing when restoring from session
Ensure the window is placed in coordinates, before maximizing, tiling or
minimizing it. This should make the window maximized/tiled on the right
(or correctmost) monitor given the stored coordinates.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4311>
2025-03-01 15:02:21 +01:00
351f2fddff tests: Add more session management tests
Ensure that windows get restored either in maximized and unmaximized
state. And ensure that monitors being removed result in windows
snapping back to reachable positions.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4311>
2025-03-01 15:02:21 +01:00
e82cc58614 wayland: Ensure to constrain windows restored through session management
Otherwise, these might end up outside the desktop extents.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4311>
2025-03-01 15:02:21 +01:00
9a1dc0216e core: Add MetaSessionManager::session-instantiated signal
Mostly useful for tests to catch a session being created.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4311>
2025-03-01 15:02:21 +01:00
99606f840c clutter/frame-clock: Use update time estimate in want_triple_buffering
We don't want triple buffering when the estimated maximum update time is
known and no larger than a refresh interval. In that case, regular frame
clock dispatch is scheduled after the previous frame is presented, so no
third buffer is necessary.

Allowing triple buffering anyway was problematic when frames are skipped
for reasons other than the frame update taking too long (e.g.
https://gitlab.gnome.org/GNOME/mutter/-/issues/3884):

1. First frame dispatches, targets display refresh cycle (DRC) n, but
   skips
2. Second frame dispatches, targets DRC n+1
3. First frame is presented at DRC n+1
4. Second frame is presented at DRC n+2

Without triple buffering:

2. First frame is presented at DRC n+1
3. Second frame dispatches, targets DRC n+2
4. Second frame is presented at DRC n+2

The second frame is presented at DRC n+2 in both cases, but with triple
buffering it targeted n+1, i.e. its contents might not be consistent
with when it's presented.

It gets worse with triple buffering if the second frame also skips:

4. Second frame skips, is presented at DRC n+3

That's a discrepancy of 2 refresh cycles between the target and
effective presentation time, which might be noticeable as more severe
stutter.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4282>
2025-03-01 13:33:09 +00:00
4727d5a00f clutter/frame-clock: Fix max_update_time_estimate clamping
When triple buffering isn't allowed, it needs to be clamped to a single
refresh interval instead of two.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4282>
2025-03-01 13:33:09 +00:00
826b856945 clutter/frame-clock: Rename max_render_time → max_update_time_estimate
Better describes what it's about.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4282>
2025-03-01 13:33:09 +00:00
e105533730 clutter/frame-clock: Log by how much a missed frame was off the target
v2:
* Tweak coding style to address check-c-code-style CI job failure.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4282>
2025-03-01 13:33:09 +00:00
a5d2eeaa9f clutter/frame-clock: Fix n_missed_frames counting
frame_clock->n_missed_frames was accidentally reset every frame, instead
of only after logging its value.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4282>
2025-03-01 13:33:09 +00:00
0470dacb41 clutter/frame-clock: Use ClutterFrameInfo::target_presentation_time
With triple buffering, frame_clock->next_presentation_time_us
corresponds to a different frame in
clutter_frame_clock_notify_presented.

Also remove superfluous has_next_presentation_time field, any
target_presentation_time value > 0 is valid.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4282>
2025-03-01 13:33:09 +00:00
2682ab2863 stage-view: Plumb through target presentation time to ClutterFrameInfo
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4282>
2025-03-01 13:33:09 +00:00
700510b7dc cogl/frame: Keep track of target presentation time for direct scanout
Same as for painting.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4282>
2025-03-01 13:33:09 +00:00
dbd82f47a5 clutter/frame-clock: Log updates to max update duration estimate
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4282>
2025-03-01 13:33:09 +00:00
7cc3dede2f clutter/frame-clock: Refactor get_max_update_duration_us helper
Preparation for later changes, no functional change intended.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4282>
2025-03-01 13:33:09 +00:00
ca47a5e83c clutter/frame-clock: Use FRAME_CLOCK topic for dispatch jitter logging
Seems to fit better there than with FRAME_TIMINGS.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4282>
2025-03-01 13:33:09 +00:00
398898e2a1 Update Basque translation 2025-03-01 12:41:15 +00:00
607829a9dc Update Brazilian Portuguese translation 2025-03-01 12:09:20 +00:00
687f5552fb onscreen/native: Peek the correct frame for power save page flips
The superseded frame is always the oldest frame so it's the head of
the queue, not the tail. Aside from anything else, the call to
`meta_onscreen_native_notify_frame_complete` that follows *does* use
the head and not the tail.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4310>
2025-03-01 04:23:09 +00:00
37b0d7d4d2 Update Lithuanian translation 2025-02-28 21:15:23 +00:00
44e2543172 meta/window-wayland: Update monitor from id for unplaced windows
If a window isn't placed yet, then we can't use its position to determine
the window's main monitor.
To solve this we get the monitor from its id instead, which correctly
uses preferred_logical_monitor whenever possible, as well as still handling
the potential edge case of unplaced windows during monitor configuration
changes.

Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2116
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/525
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4297>
2025-02-28 19:19:15 +01:00
eed9858459 core/window: Reformat window.c
This commit uses uncrustify's output with some changes to reformat parts of
window.c.
No functional change intended.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4297>
2025-02-28 14:13:35 +01:00
adf49decb1 doc/gdctl: Add missing argument to options
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4308>
2025-02-28 13:01:13 +00:00
cf504d8de6 doc/gdctl: Fix short version of --mode
Shoud be -m not -M.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4308>
2025-02-28 13:01:13 +00:00
21e8abb401 Update Czech translation 2025-02-28 11:58:50 +00:00
c621b88ee9 Update Bulgarian translation 2025-02-28 10:27:49 +00:00
6086bb706e Update Chinese (China) translation 2025-02-28 00:24:42 +00:00
d3b586abd9 Update Portuguese translation 2025-02-27 23:23:59 +00:00
2ff3d7d32e Update Galician translation 2025-02-27 22:24:02 +00:00
33d4bfbb69 Update Slovenian translation 2025-02-27 18:26:58 +00:00
d3e3115e29 Update Ukrainian translation 2025-02-27 15:05:36 +00:00
9715c92745 gdctl: Fix runtime warning message grammar
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4271>
2025-02-27 13:13:42 +01:00
de2d19e882 gdctl: Support showing and setting output luminance
`gdctl show` now prints "monitor preferences", which currently consists
of only the luminance setting.

`gdctl prefs` is introduced, where one can run e.g. `gdctl prefs
--monitor DP-1 --luminance 80.0` to set the output luminance of the
monitor connected to DP-1 to 80%.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4271>
2025-02-27 13:13:42 +01:00
be6af00d6b DisplayConfig: Add API to get and set output luminance
This will in turn change the GSetting, where the setting is actually
stored.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4271>
2025-02-27 13:13:42 +01:00
db2376cb84 settings: Add API to manipulate output luminance
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4271>
2025-02-27 13:13:42 +01:00
b7a6689941 monitor-manager: Use G_CONNECT_DEFAULT instead of 0
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4271>
2025-02-27 13:13:42 +01:00
8cae2e7b08 debug-control: Remove output luminance knob
It was replaced with an actual setting and is no longer used.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4271>
2025-02-27 13:13:42 +01:00
7ae038a62d color-device: Get output luminance from MetaSettings
This makes it per output, and not a debug utility.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4271>
2025-02-27 13:13:17 +01:00
bdf1ff0360 settings: Add output luminance settings to org.gnome.mutter
This aims to allow configuring the output luminance currently used via
the color state shaders. It will replace the output luminance property
of the debug control API.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4271>
2025-02-27 11:35:22 +00:00
5b6519b4d4 monitor: Allow passing const monitor specs to equals()
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4271>
2025-02-27 11:35:22 +00:00
7fa41a6f97 monitor: Make spec clone function take a const pointer
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4271>
2025-02-27 11:35:22 +00:00
ad77344809 output: Declare color mode type in backend types
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4271>
2025-02-27 11:35:22 +00:00
463eb3993b settings: Remove stray newline
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4271>
2025-02-27 11:35:22 +00:00
e0b44bdc03 settings: Fix include order
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4271>
2025-02-27 11:35:22 +00:00
8a59d8a05d Update Catalan translation 2025-02-27 06:38:12 +00:00
9acb170493 Update Brazilian Portuguese translation 2025-02-27 01:41:56 +00:00