33182 Commits

Author SHA1 Message Date
Jonas Ådahl
5e4821d9fc tests/cursors: Test viewport based cropping
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
a9a4923c03 tests/cursor-tests: Also test cursor rendering in screen casting
This uses the ref test infrastructure inside the cursor tests screen
cast client, and verifies the content on the screen cast matches the
content of the compositor, both when using the 'embedded' cursor mode,
and the 'metadata' cursor mode.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
bcb52960db tests/cursor: Test Wayland client using wp_viewport for scaling
This test doesn't use a separate reference image, but verifies the
result is identical to that of the built in cursor.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
3d45345789 tests/cursor-tests: Also test a couple of fractional scales
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
35cbea59cc tests/remote-desktop-utils: Add monitor recording helpers
Will be used in tests for recording existing monitors.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
8cf41761a9 tests/screen-cast: Move executable launching into helper
It doesn't contain anything screen cast specific, except the
XDG_RUNTIME_DIR, so make it usable from elsewhere. While at it, prepare
it for being able to run the glib test functionality.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
acd7fa7f50 tests/utils: Rename test runner executable path variable
We'll have more "test clients", so make it a bit more explicit to avoid
shadowing variables.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
228be80164 tests/monitor-test-utils: Make it explicit when scale should be dynamic
This also avoids loosing precision since the float won't be casted to an
int before being used to configure the test output.

Currently there is only one test that expects the scale to be calculated
dynamically, all the other always assume scale ending up being 1.0
unless explicitly configured in some way.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
967be91c92 tests/remote-desktop-utils: Allow screen cast only sessions
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
92f6f2e8fd tests/remote-desktop-utils: Make cursor mode explicit
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
a4380075a6 tests/remote-desktop-utils: Keep track of current buffer
This will be useful later on when we actually look at the buffer in
places other than when it's actively processed.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
2386976f5e tests/remote-desktop-utils: Narrow buffer scope
Only actively test MemFd, and don't ever ask for or expect MemPtr, since
we don't support those anyway. Also, for convenience, ask the buffers to
be automatically mmap:ed.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
9c4e93b055 tests/screen-cast: Split out generic parts to utils file
This will make it easier to add more screen cast / remote desktop test
cases.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Robert Mader
e580453df9 screen-cast: Implement viewport support
[jadahl] Rework hotspot calculations

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
f77d8e2a12 display: Fix cursor sprite sizes with fractional scales
This makes the cursor size match the expectation given by the theme
size. It also means the sprite size now matches GTK4 provided cursor
surfaces using wp_viewport.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
8fc1bddf3b cursor-renderer/native: Handle early cursor texture changes
We create the cursor view data when we update the cursor, but allow the
texture to be realized earlier than that. The texture change listener
invalidates the hw cursor validity state, but since it's initialized to
invalid, the hardware cursor will still be correctly handled.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Robert Mader
35e5ae718a cursor-renderer: Add viewport support
This makes the overlay code work which is notably used for screen
sharing and recording if the client doesn't support meta-data cursors.

[jadahl] Changed the approach the way coordinates are scaled.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
01f2f40475 cursor-renderer: Pass renderer when finding highest scale monitor
Do this instead of going via the backend, since we don't need anything
other from the backend.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Robert Mader
19669a3d9d cursor-renderer/native: Add support for viewports
[jadahl] Rework hotspot calculations

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Robert Mader
e674c7e454 cursor-sprite: Add API for viewports
[jadahl] Rework hotspot calculations.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Robert Mader
e402eaa950 shaped-texture: Use pipeline matrix helper
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Robert Mader
2ae0fcfc5c mtk: Add mtk_compute_viewport_matrix helper
It'll be used to calculate a CoglPipeline layer matrix given viewport
data.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
996678cfef mtk/build: Sort files alphabetically
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
e9475b2190 tests: Add basic ref-test based cursor sprite test case
It currently contains some basic tests using the built in cursor as well
as traditional buffer scale using Wayland client in different monitor
configurations.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
129ead488b tests/ref-test: Allow updating only non-existing reference images
This makes it a bit more reliable to add more reference images, but be
sure not to touch any existing ones.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
9cc5bec0a3 tests/ref-test: Split out image processing bits
This allows it to be used in processes that doesn't have a stage view
etc, e.g. screen cast clients.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
aeeb710d93 tests/utils: Make wait-for-window helper more generic
It took a MetaTestClient, which wasn't used. To allow it be used for windows
that doesn't come from a MetaTestClient, remove the MetaTestClient
namespace, and update the callers.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
c280af08c2 tests/wayland/test-client-utils: Add boilerplate for pointer input
This adds wl_seat and wl_pointer boilerplate, and a pointer-entered
signal on the surface helper struct. It's intended to be used by a
future cursor test case client.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
08147d0c9b tests/wayland: Add int property type to test driver
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
a0877dc071 tests/wayland: Make test driver properties table multi typed
Store values as GVariant's. This will allow to add other types property
types than strings.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
29850b7345 tests/utils: Return GTask after flushing input
This silences a debug warning from glib.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
ff2c329074 tests: Disable animations with context flag instead of env var
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
1f3dd65594 tests/shell: Allow configuring the background color
This will be used to create background colors that will match fullscreen
window colors, so they can share the same ref test reference image.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
ea9e8bff2d debug-control: Add InhibitHwCursor property
Inhibits the hardware cursor globally when true.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
b97516edb9 backend: Add simple HW cursor inhibit API
The existing is meant to allow more complex inhibitation, but sometimes
it's useful to inhibit globally, e.g. for debugging purposes. Add API to
achieve this.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Jonas Ådahl
da0fa12f1f cursor-sprite/xcursor: Assume pixels are premultiplied
This makes the built in cursors and cursors from Wayland clients look
the same.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3859>
2024-12-11 16:22:57 +00:00
Bilal Elmoussaoui
aa7e963422 ci: Adapt to updated release module template
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4176>
2024-12-11 13:57:31 +01:00
Bilal Elmoussaoui
54f48349b6 Revert "ci: Use meson introspect to generate artifact path"
This reverts commit bcfbc7fa17c189306788bd708409b1e68740c890.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4176>
2024-12-11 13:43:36 +01:00
Georges Basile Stavracas Neto
3c4ec122b5 clutter/paint-volume: Cleanup private API
Following previous commit, rename _clutter_paint_volume_init_static()
to clutter_paint_volume_init_from_actor(), and also
_clutter_paint_volume_copy_static() to
clutter_paint_volume_init_from_paint_volume().

Make clutter_paint_volume_init_from_paint_volume() follow the dst/src
semantic in its arguments, which also allows removing
_clutter_paint_volume_set_from_volume() which is exactly the same now.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4175>
2024-12-10 14:18:18 -03:00
Georges Basile Stavracas Neto
7e24b9696a clutter/paint-volume: Remove 'is_static'
And change clutter_paint_volume_free() to always free the paint volume.
Remove all calls to clutter_paint_volume_free() on static variables.

Having to call a free function on a static variable always seemed a bit
odd, and this genuinely confuses Coverity (and me).

Coverity CID: #1505838

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4175>
2024-12-10 14:18:17 -03:00
Georges Basile Stavracas Neto
38d4962c20 clutter/paint-nodes: Use g_autoptr
Tighten up the refcount of the CoglTexture created by the blur node.
This seems to make Coverity happier.

Coverity CID: #1575122

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4175>
2024-12-10 14:18:17 -03:00
Georges Basile Stavracas Neto
2e61e58b57 clutter/gesture-action: Call clutter_event_type once
It's not really necessary to call clutter_event_type (event) twice
for the same event. It also seems to confuse Coverity.

Coverity CID: #1508228

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4175>
2024-12-10 14:18:17 -03:00
Georges Basile Stavracas Neto
0265fa34be window: Initialize rect
As far as I can see this doesn't happen in practice, but theoretically
the uninitialized values can be used if:

 1. `did_placement` is TRUE
 2. `flags` contains both `META_MOVE_RESIZE_RESIZE_ACTION` and
    also `META_MOVE_RESIZE_MOVE_ACTION`
 3. `!meta_window_is_tied_to_drag (window)` is FALSE

In that case, the `frame_rect` variable (with uninitialized values) is
passed to `unconstrained_rect`, then passed to `constrained_rect`,
then finally the (uninitialized) X and Y values are read in the
`if (did_placement)` branch.

This is probably a regression from 3047b2ce261. I don't know if this is
the appropriate fix.

Coverity CID: #1511378

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4175>
2024-12-10 14:17:47 -03:00
Georges Basile Stavracas Neto
c6ecaf01c2 cogl/sampler-cache: Initialize variable
It's apparently harmless.

Coverity CID: #1511379

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4175>
2024-12-10 14:17:47 -03:00
Jonas Ådahl
f4201bc3d3 service-channel: Add global shotcuts portal backend client type
The global shortcuts portal backend component lives in
gnome-control-center, and is responsible for preseting the GUI for
managing client provided global shortcuts.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4173>
2024-12-10 17:02:24 +00:00
Jonas Ådahl
0f195078cb wayland/x11-interop: Make allow list more declarative
Declare allowed service client types in a list, and loop through them,
instead of doing it manually.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4173>
2024-12-10 17:02:24 +00:00
Bilal Elmoussaoui
a2fdeac9e7 cogl/driver: Move various texture functions to TextureDriverGL
As they are now shared between GL3 and GLES3 texture driver, there is no
need anymore for having them in a separate header and included.

Cleanup the names of the functions while doing so.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4163>
2024-12-10 11:08:53 +00:00
Bilal Elmoussaoui
1401c745d7 cogl: Remove function declaration
No longer has an implementation.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4163>
2024-12-10 11:08:53 +00:00
Bilal Elmoussaoui
f3430ff1c5 cogl: Add a TextureDriverGL
Abstract away the common bits between GL3 and GLES2 TextureDriver
implementations by sharing the common bits in a parent class.

Ideally, we would move the various vfuncs that are GL specific from the
abstract TextureDriver type but that can be done at a later stage once
there is actual work on adding a Vulkan driver.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4163>
2024-12-10 11:08:52 +00:00
Bilal Elmoussaoui
cde6a447b4 cogl: Move various vfuncs from DriverVtable to TextureDriver
As they make more sense there. Maybe we could have a common
OpenGLTextureDriver
that would share the common texture_2d_* vfuncs but that can be done
later.

By moving those vfuncs to the TextureDriver, we can get rid of the
texutre_2d
nop driver implementations.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4163>
2024-12-10 11:08:52 +00:00