1
0
Fork 0
Commit graph

31866 commits

Author SHA1 Message Date
Bilal Elmoussaoui
de335cb6a5 Add editorconfig file
Editorconfig is already supported by editors like GNOME Builder. Inspired from the one used in GTK/GLib
See https://editorconfig.org for details.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3761>
2024-05-21 09:09:11 +00:00
Georges Basile Stavracas Neto
638d3355b4 cogl: Drop CoglSwapChain
CoglSwapChain is currently unused, and doesn't hold any information
nor is used for anything in particular.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3759>
2024-05-20 11:45:31 +00:00
Bilal Elmoussaoui
c13956fb9e Use gboolean consts instead of C bools
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3748>
2024-05-20 11:29:54 +00:00
Sebastian Keller
7a38e12ed0 egl: Don't free source error after propagating it
local_error in meta_egl_query_device_string() is using g_autoptr,
meaning that it was getting freed after g_propagate_error(). This then
would result in error->message becoming invalid, causing crashes when
logging the error message later on.

Fixes: 8234f5bc7 ("egl: Return success status from meta_egl_query_device_string")
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3758>
2024-05-20 10:43:40 +00:00
Jonas Ådahl
eaf69fdea8 ci: Create artifacts of meson logs in dist job
Tests sometimes fail there, but without logs it's hard to know why.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3754>
2024-05-20 08:31:04 +00:00
Jonas Ådahl
e2e687c9db dbusmock/mocks-manager: Don't create a pipe for started templates
Just shovel the data through our own stdin/stdout, which will end up at
the right place (e.g. /dev/null).

This should hopefully solve `mutter-dist` failing due to a D-Bus method
call timeout in CI.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3757>
2024-05-19 21:43:10 +00:00
Marco Trevisan (Treviño)
6ab36f7297 tests/stacking: Do struts toggling during monitor-changed event
To simulate better what happens in a real shell environment

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3701>
2024-05-17 15:33:52 +00:00
Marco Trevisan (Treviño)
4eed39ed12 test-runner: Add ability to perform actions on signals callbacks
An action can be performed both on a signal emitted by a window or by
a well-known signal name, so that one can do:

  [window-id]::signal => command

 And so these would work:
  w/1::position-changed => resize w/2 20 30
  ::monitors-changed => move w/1 30 40

We only support "monitors-changed" global signal name or connecting to
window signals for now, but this can be easily expanded adding support
for more global signal values or parsing other kinds of object instances

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3701>
2024-05-17 15:33:52 +00:00
Marco Trevisan (Treviño)
9374fad2b4 tests/stacking: Add test for strut changes together with monitors changes
We have an issue causing windows to be hidden below struts when monitor
changes events happen. While this was easily reproducible in gnome-shell
we had not a mutter stacking test checking it.

Here it is now.

Related: https://gitlab.gnome.org/GNOME/mutter/-/issues/1627
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3701>
2024-05-17 15:33:52 +00:00
Marco Trevisan (Treviño)
fcdfc4c86f test-runner: Add command to reload monitors
This trigger monitors-changed event which leads to lots reconfiguration
changes.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3701>
2024-05-17 15:33:52 +00:00
Marco Trevisan (Treviño)
c544b38dbb tests/stacking: Add test to verify that setting and adding struts works
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3701>
2024-05-17 15:33:52 +00:00
Marco Trevisan (Treviño)
3686b1cf6f test-runner: Support parsing monitor-relative window positions
Can do: assert_position w/1 MONITOR_WIDTH/2 MONITOR_HEIGHT*0.75

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3701>
2024-05-17 15:33:52 +00:00
Marco Trevisan (Treviño)
8246071c1c test-runner: Add ability to remove struts by side
Removes only struts that are in a certain side

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3701>
2024-05-17 15:33:52 +00:00
Marco Trevisan (Treviño)
0bc873419d test-runner: Add support for add_strut command
It allows to add struts to the ones we already have, as per this we can
re-implement `set_strut` as `clear_strut` + `add_strut`.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3701>
2024-05-17 15:33:52 +00:00
Marco Trevisan (Treviño)
ea7357f48a test-runner: Add ability to set strut with monitor-relative sizes
Allows to use:
  set_strut 0 0 MONITOR_WIDTH*0.5 MONITOR_HEIGHT/4 top [default]

We use the currently focused window as the reference monitor if any or
the primary one if no monitor is explicitly provided.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3701>
2024-05-17 15:33:52 +00:00
Marco Trevisan (Treviño)
e250bd1ebb workspace: Add a private getter for builtin struts
It can be used to change current struts without having to
track them at test level.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3701>
2024-05-17 15:33:52 +00:00
Marco Trevisan (Treviño)
44c6d02964 workspace: Clean structs using clear GSList utility function
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3701>
2024-05-17 15:33:52 +00:00
Marco Trevisan (Treviño)
e005d035c0 boxes: Define cleanup function for MetaStrut and use auto-pointers
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3701>
2024-05-17 15:33:52 +00:00
Marco Trevisan (Treviño)
8dc6115277 test-runner: Add ability to perform basic divisions and multiplications
We may need to compare monitor size to fractions and while it can be
done using inverse divisions, they were not supported as we didn't parse
floating point values.

So, just add support for both multiplications and divisions, so that we
can easily do stuff like `MONITOR_HEIGHT*3/4`.

Additions would be easy to support too if we don't care about operator
priorities, but that's out of scope for now.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3701>
2024-05-17 15:33:52 +00:00
Jonas Ådahl
5e6aee6367 tests/runner: Make 'wait_reconfigure' actually wait for a reconfigure
We just made an half assed attempt to wait, but e.g. when clients were
waiting for a frame event, the attempt was not enough, as the clients
would not ack any configure until the time they were scheduled to paint
again.

Fix this by actually tracking newly pending configurations, and waiting
for them to return.

On X11, still be lazy and hope for the best, as there is no similar
configuration tracking there.

Some tests were updated to use just 'wait' when there was no actual need
for any extra waiting.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3701>
2024-05-17 15:33:52 +00:00
Corentin Noël
0ab5ff6eed clutter/transition: Do not call methods of a NULL ClutterAnimatable
Only call clutter_animatable_get_actor on a non-null object, otherwise set
the timeline actor to NULL directly.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3750>
2024-05-16 08:00:23 +00:00
Sebastian Keller
1f1538be76 x11/window: Compare input shape to client rect when undecorating
When a window with an input shape on its decoration window becomes
undecorated and meta_window_x11_update_input_region() gets called via
notify::decorated, the buffer_rect of the window has not been updated
yet while the decorated property has. This would lead to us comparing
the input shape of the client window to the buffer_rect which still
includes the decoration window. This would fail to detect the common
case when the client window has no input shape set, leading to the input
region being set to the size of the client window rather than NULL. If
the window is then resized later, the input shape would remain at the
previous size.

This was not a problem before 6bd920b35, because then we were (wrongly)
always comparing to the client_rect.

Fix this by choosing the correct rect for comparison depending on
whether the window is decorated.

Fixes: 6bd920b35 ("x11/window: Use correct bounding rect to determine NULL input region")
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3451
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3720>
2024-05-15 14:07:36 +00:00
Michel Dänzer
1c7ed16d05 Revert "wayland/surface: Check buffer size also for role-less surfaces"
This reverts commit 98c8c03729.

Although the spec technically doesn't allow this for role-less surfaces
either, it's difficult for clients to avoid it for surfaces which later
assume a cursor role, and there's consensus to allow it for the time
being:
https://gitlab.freedesktop.org/wayland/wayland/-/issues/194#note_1371674

Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3471
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3743>
2024-05-15 09:15:07 +00:00
Florian Müllner
da0bd303ad core/anonymous-file: Support 0-sized files
There is nothing to allocate for a 0-sized files, and indeed
posix_fallocate() will error out if the passed len isn't greater
than 0.

Now that anonymous files are used to back the memory selection
source, this fixes unsetting the selection when the screen is
locked.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3752>
2024-05-15 08:52:50 +00:00
Michel Dänzer
09a6ff6eb7 color-manager: Call update_all_gamma from on_monitors_changed
This ensures that an up-to-date gamma LUT is applied for newly-enabled
monitors.

Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2480
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2546
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3439
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3742>
2024-05-14 12:45:15 +00:00
Michel Dänzer
9ed00280f7 color-manager: Move update_all_gamma helper up
Preparation for next commit, no functional change intended.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3742>
2024-05-14 12:45:15 +00:00
Scrambled 777
1990f2349d Update Hindi translation 2024-05-12 13:10:29 +00:00
Jonas Ådahl
22f67d107d tests: Add test case for keybinding remove race
When a key binding is removed, and a trigger key sequence is dispatched
before the idle callback that resolves and updates the actual binding,
we should handle that gracefully.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3711>
2024-05-07 09:18:01 +00:00
Keyu Tao
8c39a25459 keybindings: Add refcounting to fix use-after-free for key handlers
Two new fields: ref_count and removed, are added to MetaKeyHandler, and
it would be freed only if the ref count has reached 0. When handler is
removed from key_handlers GHashTable, key_handler_destroy() would mark
removed as TRUE, and do an unref. handler->removed is checked in
get_keybinding, and binding with handler removed would not be used.

Also in MetaKeyBinding, it now has the ownership of the name field, to
avoid it being freed before logging. Create or copy a binding would
do a ref inc for handler, and free one would unref handler.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/1870.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3711>
2024-05-07 09:18:01 +00:00
Jonas Ådahl
57e16cf010 window/wayland: Constrain sporadic client resizes immediately
When a client resizes on its own, make sure the new size is passed
through the window constraints machinery directly, to trigger any
potential window management rule that might apply.

Fix a couple of tests to make use of this behavior by introducing a new
'wait_size' command that waits until a window has been resized to a
expected size.

This replaces the fix introduced in 0e736af301 ("window: Ensure
constraints after a Wayland client resize").

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3700>
2024-05-07 08:59:50 +00:00
Jonas Ådahl
6819296e81 ci: Build our own gtk3 containing unreleased bug fix
Contains https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/7139 which
is needed for test suite improvements.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3700>
2024-05-07 08:59:50 +00:00
Bilal Elmoussaoui
fc623c1ed1 build: Enable -Werror=shadow and fix related issues
Mostly renames or removing already defined types

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3378>
2024-05-06 15:54:16 +00:00
Sebastian Wick
e509fc7f00 window: Start in the activate suspend state until mapped
Starting the timeout to move from hidden to suspended before the window
is mapped means we don't have a previous window configufration which we
need to get the new window configuration with the suspended state.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3731>
2024-05-03 18:24:27 +00:00
Sebastian Wick
7a9883d5bb window: Move implement_showing for the next commit
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3731>
2024-05-03 18:24:27 +00:00
Jonas Ådahl
52d5758f1b tests/wayland: Add test for mapping clone of obstructed window
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3731>
2024-05-03 18:24:27 +00:00
Jonas Ådahl
b69fc15543 tests/wayland: Run with G_MESSAGES_DEBUG=all
Helpful when debugging tests.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3731>
2024-05-03 18:24:26 +00:00
Jonas Ådahl
3dbe3668e6 ci: Run gnome-shell tests with the timeout multiplier set to 5
Sometimes the test runners are saturated with other work. Bump the test
timeouts by a multiplier of 5 with the hope that they now will be much
more likely to have time to finish in time.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3735>
2024-05-03 14:39:07 +00:00
Marco Trevisan (Treviño)
31165c2d86 x11/window: Add proper type guard to x11-specific public API calls
These functions are specific for X11 windows only so we should check
if the passed window is an X11 one, not just a MetaWindow since we're
casting to the actual type at later point.

Fixes changes part of commit e1e6534eb

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3727>
2024-05-03 12:38:01 +00:00
Marco Trevisan (Treviño)
b422393bbc x11/window: Add type-check guard to meta_window_x11_get_group()
Since this is still public API we want to ensure that we don't cast
it directly without having checked its type

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3727>
2024-05-03 12:38:01 +00:00
Marco Trevisan (Treviño)
2a88a3eb96 x11/window: Do not try to compare a wayland active window with X11
If a window sends a configure stacking request, we were comparing the
active window with the event window even though they were different
client types (e.g. wayland and x11).

This was leading to a critical error, so let's handle this by ensuring
that the active window is of the same kind of the event window before
doing x11-specific checks. Behaving as different applications in case.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3727>
2024-05-03 12:38:01 +00:00
Daniel van Vugt
f3a52551f1 backends/native: Remove unused meta_kms_device_add_fake_plane_in_impl
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3676>
2024-05-02 09:34:46 +00:00
Daniel van Vugt
14e18de90d backends/native: Add fake cursor plane using impl_device's crtcs
Because `meta_kms_impl_device_simple_initable_init` is called in the
middle of `meta_kms_device_new`, the crtcs list for `MetaKmsDevice`
has not been populated yet. And thus the loop to detect missing
cursor planes and create fake ones never iterated. But the crtcs list
does already exist in `MetaKmsImplDevice` so iterate over that instead.

Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3264
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3676>
2024-05-02 09:34:46 +00:00
Daniel van Vugt
b620dbb188 kms/impl-device: Add function meta_kms_impl_device_has_cursor_plane_for
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3676>
2024-05-02 09:34:46 +00:00
Michel Dänzer
dd32f3b3be wayland/transaction: Check surface pointer validity in _ensure_entry
If a caller passes in NULL or a non-NULL value which doesn't point to
a valid MetaWaylandSurface object, this will hopefully point in the
direction of the cause.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3725>
2024-04-30 17:14:56 +00:00
Michel Dänzer
b67f94ca7e wayland/subsurface: Hold sibling surface reference in placement ops
It was possible for the sibling surface to be already destroyed in
meta_wayland_transaction_add_placement_surfaces, in which case
g_object_ref would return NULL for it, and
meta_wayland_transaction_commit would then crash dereferencing a NULL
surface pointer.

Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3462
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3725>
2024-04-30 17:14:56 +00:00
Florian Müllner
3155cf514c ci: Bump image
GLib 2.79.2 split out platform specific API into separate GIRs,
and gjs now warns when using affected API without the new import.

However our CI image still only includes the 2.79.1 development
release, so in order to allow gnome-shell to depend on a more
recent glib release, bump the image to pull in a newer version.

Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3288
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3723>
2024-04-29 18:41:18 +00:00
Leônidas Araújo
0f11ef6c12 Update Brazilian Portuguese translation 2024-04-29 18:00:41 +00:00
Hugo Carvalho
d9207ee496 Update Portuguese translation
(cherry picked from commit d9fe1988e7)
2024-04-28 20:15:36 +00:00
Carlos Garnacho
243890a688 wayland: Do not forget immediately of key press serials on key release
Prior to commit 5dfed8a431, the MetaWaylandKeyboard would always remember
the last key press serial, and consider it valid after the key was released,
as long as no other key presses/releases happened in between.

That commit improved things so that MetaWaylandKeyboard can track multiple
keys being pressed simultaneously, but also changed so that the serial for
a key press is immediately forgotten after the key press event was received.
This may break in situations like testing or keyboard macros where key
press and release is handled in a quick sucession, so the client reaction
to the key press (e.g. popping up a menu) might arrive too late.

Add a sort of spiritual successor to this handling, and make keyboard
press serials corresponding to the last key up forgotten at the next
key press/release received.

Fixes: 5dfed8a431 ("wayland: Preserve serial for all pressed keys")
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3458
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3721>
2024-04-26 19:15:06 +00:00
Carlos Garnacho
fb8ac5dff7 wayland: Track current tablet tool focus surface
We did not track the current surface (i.e. the logical focus) too
thoroughly, so there might be chances that a stale surface pointer
here becomes the focus. Track its destruction (like it's done at e.g.
MetaWaylandPointer) and unset the current surface early, in order
to avoid possible invalid memory access.

Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3372
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3715>
2024-04-25 14:33:28 +00:00