Bilal Elmoussaoui
288ad7206b
clutter/actor: Make ActorFlags internal
...
And only expose a getter/setter for NO_LAYOUT flag
This reduces the possible ways users of the Actor API
can affect the internals and would make next commit
simpler
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3917 >
2024-08-07 22:46:16 +00:00
Sebastian Wick
e3afa1a1d1
color-device: Apply HDR and colorspace calibration
...
The color device now updates the white point via a LUT and sets the
colorspace and HDR metadata properties on monitors to get into the
required configuration.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3904 >
2024-08-07 16:45:26 +02:00
Sebastian Wick
dc6632f19b
color-device: Derive color space from monitor calibration
...
This ignores the white point calibration for now because our color state
isn't expressive enough, yet.
Co-authored-by: Joan Torres <joan.torres@suse.com>
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3904 >
2024-08-07 16:45:10 +02:00
Sebastian Wick
357e5c92f2
backends: Let the color manager know about monitor changes earlier
...
This makes it possible to set monitor/output properties before the stage
views get re-created.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3904 >
2024-08-07 16:40:56 +02:00
Sebastian Wick
a539071548
output: Fix minor coding style issue
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3904 >
2024-08-07 16:40:56 +02:00
Sebastian Wick
6dc9cab14b
backends: Move MetaOutputHdrMetadata from KmsConnector to Output
...
This makes it independent of the native backend and allows us to use it
in more places.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3904 >
2024-08-07 16:40:56 +02:00
Sebastian Wick
fefcc6edec
color-device: Track the ClutterColorState of the device
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3904 >
2024-08-07 16:40:56 +02:00
Sebastian Wick
c123178f1c
color-device: Rename signal "updated" to "calibration-changed"
...
The generic term updated can mean anything. This is specifically about
calibration related updates like changing the sink colorimetry
(Colorspace, HDR metadata) and changes to the white point for night
light etc.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3904 >
2024-08-07 16:40:56 +02:00
Sebastian Wick
f5ce2ddf3c
color-manager: Create color devices also for virtual monitors
...
We will need color devices on all monitors soon.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3904 >
2024-08-07 16:40:56 +02:00
Sebastian Wick
431c4d12b9
color-device: Make it possible to outlive the active monitors
...
Previously the color device was destroyed when it was attached to a
monitor that was going away. However, the MetaMonitor objects are
ref-counted and can stay around for longer, even if the underlying
resources went away. We need color devices for as long as the
MetaMonitors are alive.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3904 >
2024-08-07 16:40:48 +02:00
Sebastian Wick
a10b56e946
color-manager: Dispose instead of finalize
...
Otherwise we'll keep references to color devices for too long.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3904 >
2024-08-07 16:30:04 +02:00
Sebastian Wick
a50e0a76b6
color-device: Create devices without a ready color manager
...
Every monitor should eventually have a corresponding color device. To
make sure this can work, we must handle situations where the color
manager didn't connect to colord yet, and thus isn't ready.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3904 >
2024-08-07 15:53:39 +02:00
Sebastian Wick
25e5c59202
color-device: Avoid roundtrip through manager when assining a profile
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3904 >
2024-08-07 15:53:39 +02:00
Sebastian Wick
6452c21b85
color-device: Let the device check if it should skip updating
...
Not everything will require the device to be "ready" (i.e. have a ICC
profile assigned).
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3904 >
2024-08-07 15:53:39 +02:00
Sebastian Wick
8eeec32c90
color-device: Get temperature from the manager
...
Instead of passing it to the update function. This decouples the
updating from being specifically about the temperature/white point.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3904 >
2024-08-07 15:53:39 +02:00
Sebastian Wick
682ce3222c
color-manager: Rename function to avoid the term gamma
...
It currently changes the white point using a LUT and will do more things
in the future.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3904 >
2024-08-07 15:53:38 +02:00
sid
9e24fa52c6
core: Include the pkgconfig-specified gdesktop-enums.h
...
Follow up to commit 7658e07be
Refer https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1370
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3916 >
2024-08-07 09:34:52 +00:00
Daniel van Vugt
a04d90d9e7
backends/native: Avoid duplicating or losing KMS property sets
...
When triple buffering, `meta_onscreen_native_prepare_frame` for the next
frame is called before `notify_view_crtc_presented` for the previous frame.
So our booleans were unfortunately still TRUE in the second prepare_frame,
resulting in two frames with the same property updates.
When double buffering, having roughly one frame interval between
`meta_onscreen_native_prepare_frame` and `notify_view_crtc_presented`
meant that property updates signalled between the swap and presentation
wouldn't get attached to a KMS update, and would be forgotten when
`notify_view_crtc_presented` resets the flags to FALSE.
To solve these we now keep a separate flag and counter per property,
tracking invalidation and pending updates respectively. The latter is a
counter rather than a boolean in support of triple buffering where two
updates may be pending concurrently (next and posted).
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3912 >
2024-08-07 04:01:17 +00:00
Georges Basile Stavracas Neto
cdbe0a27a2
service-channel: Add client type for filechooser portal
...
Add a new service client type for a filechooser portal client, and
expose the x11_interop protocol to it.
This will be used to make Nautilus a file chooser portal implementation.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3694 >
2024-08-06 16:07:48 +00:00
Daniel van Vugt
7937f78c7e
backends/native: Only warn about cursor sizes once
...
Because if the current theme has exceeded the dimensions of
`DRM_CAP_CURSOR_WIDTH/HEIGHT` then the warning is just going to repeat
every time the cursor changes. We still fall back to software cursors
just fine so it's not important to repeat the warning.
In Mutter 46 the warning was "Invalid theme cursor size". Same problem.
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3597
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3924 >
2024-08-06 09:58:44 +00:00
Marco Trevisan (Treviño)
07023b65bc
cogl/color: Do not make cogl_color_free introspectable
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3925 >
2024-08-06 01:27:12 -06:00
Marco Trevisan (Treviño)
d422cddc2e
cogl/color: Ensure Cogl.Color.equal() is introspectable
...
We need to explicitly define the type, being a generic const pointer.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3925 >
2024-08-06 01:23:55 -06:00
Jonas Ådahl
3c070604dd
backend/x11/clutter-backend: Group glib header include correctly
...
glib.h is not a bundled header, so move it accordingly.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3923 >
2024-08-05 21:32:38 +02:00
Jonas Ådahl
de76e007b5
cogl: Fix some whitespace issues
...
The removal of the onscreen template left some function definitions and
declarations incorrectly indented.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3923 >
2024-08-05 21:31:43 +02:00
Sebastian Wick
c5e9f028b2
cogl: Provide backwards compat for GLSL version 140 shaders
...
We still use GLSL 100 syntax which means `varying`, `attribute` and
`gl_FragColor` but GLSL 140 wants us to use `in` and `out`. This
provides some simple `#define`s to make it still look like the GLSL 100
syntax is supported.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3907 >
2024-08-05 17:57:11 +00:00
Sebastian Wick
ea696ae4b1
cogl: Repace codegen_boilerplate_buffer with a local variable
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3907 >
2024-08-05 17:57:11 +00:00
Sebastian Wick
94806c98bf
cogl: Derive GLSL version from major, minor and GL vs GLES
...
The GLSL version can be derived from the major and the minor, with the
exception that GLSL ES versions require the "es" suffix.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3907 >
2024-08-05 17:57:11 +00:00
Sebastian Wick
e122943bcd
cogl/gl: Check GLSL version and unify GL context version checks
...
This adds a check which makes sure that the required GLSL/GLSL ES
versions are supported.
It also splits out the GLES version check into its own function, just
like GL does.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3907 >
2024-08-05 17:57:11 +00:00
Sebastian Wick
74917e1b07
cogl/gl: Use g_auto (GStrv) and g_autofree in more cases
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3907 >
2024-08-05 17:57:11 +00:00
Bilal Elmoussaoui
da2e931355
clutter/backend: Remove get_display vfunc
...
As there is no separate implementations anymore
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3915 >
2024-08-05 15:47:29 +00:00
Bilal Elmoussaoui
b684dc0382
clutter/backend: Provide a default get_display implementation
...
As there is no on screen template checks done on the x11 backend implementation
so simplify that.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3915 >
2024-08-05 15:47:29 +00:00
Bilal Elmoussaoui
5277e33d37
cogl: Remove no longer used OnscreenTemplate
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3915 >
2024-08-05 15:47:29 +00:00
Bilal Elmoussaoui
3b386ba5d7
cogl: Remove no longer used FramebufferConfig
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3915 >
2024-08-05 15:47:29 +00:00
Bilal Elmoussaoui
833070ab79
cogl: Remove need_stencil config
...
As it is always set to TRUE
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3915 >
2024-08-05 15:47:29 +00:00
Bilal Elmoussaoui
41ec1aa0ca
cogl: Remove use_stereo_stage config
...
Nothing sets it from the X11 backend API, so just get rid of it
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3915 >
2024-08-05 15:47:29 +00:00
Bilal Elmoussaoui
a1828e7212
cogl: Remove samples_per_pixel config
...
It is only set through an undocumented env variable
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3915 >
2024-08-05 15:47:29 +00:00
Florian Müllner
4ddd83c51e
Bump version to 47.beta
...
Update NEWS.
2024-08-03 19:23:22 +02:00
Daniel van Vugt
e389178180
onscreen/native: Return GErrors from secondary GPU updates
...
And return early from `swap_buffers_with_damage` if the error would have
led to flipping a NULL buffer.
This is also the perfect time to remove the `egl_context_changed` parameter
and move `_cogl_winsys_egl_ensure_current` closer to the code that actually
needs it.
Related: https://bugs.launchpad.net/bugs/2069565
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3817 >
2024-08-02 10:27:54 +00:00
Daniel van Vugt
45a97a5e3f
onscreen/native: Set frame result to IDLE on swap failure
...
So that swap failure messages are not also followed by:
meta_stage_native_redraw_view: runtime check failed: (!META_IS_CRTC_KMS (crtc))
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3817 >
2024-08-02 10:27:54 +00:00
Daniel van Vugt
0de83166db
onscreen/native: Unify the failure paths of swap_buffers_with_damage
...
They're both the same and a third one will be added soon.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3817 >
2024-08-02 10:27:54 +00:00
Bilal Elmoussaoui
b9269abaf5
cogl: Remove unused Error types
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3910 >
2024-08-01 11:06:33 +00:00
Bilal Elmoussaoui
e43d9d7e75
cogl/indices: Add a IndicesType.get_size
...
To de-duplicate that code
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3910 >
2024-08-01 11:06:33 +00:00
Bilal Elmoussaoui
609f7e3fe1
cogl: Remove unused OnScreenTemplate.set_samples_per_pixel
...
Not sure if we want to keep that env variable around
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3910 >
2024-08-01 11:06:33 +00:00
Bilal Elmoussaoui
a71ad8e861
cogl/list: Remove unused API
...
Ideally, I think we might have to replace CoglList usage
as the over-complicated macros makes it hard to parse
But that is a task for another day
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3910 >
2024-08-01 11:06:33 +00:00
Bilal Elmoussaoui
2d25b114e6
cogl/buffer: Use set_data helper
...
That ignores the error param, which is the behaviour
we always had. Changing that to propagate the error
would make the API ugly, so it is fine to remove?
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3910 >
2024-08-01 11:06:33 +00:00
Bilal Elmoussaoui
beb9ecdbc4
cogl: Remove no longer useful Since annotation
...
Spotted in previous commit
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3910 >
2024-08-01 11:06:33 +00:00
Bilal Elmoussaoui
a05caa6338
cogl/texture2d: Rename from_egl_image constructor
...
Similar to the from_egl_image_external one, to give it the correct
namespace
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3910 >
2024-08-01 11:06:33 +00:00
Bilal Elmoussaoui
a9ec604eba
cogl/renderer: Expose handle_event
...
As it was originally the function to be used before
making it private and providing safer wrappers around it for x11/win32.
Nowadays, it is only used in x11 and only internally in mutter, exposing
a 'safer' variant costs us exposing more of x11 renderer APIs without
much benefits.
With this change, the only internal xlib renderer we need from meta is
set_foreign_display which can't be easily worked around
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3910 >
2024-08-01 11:06:33 +00:00
Bilal Elmoussaoui
b07c772fc8
cogl: Rename Shader/Program constructors
...
Otherwise they end up as global functions instead of constructors
of their corresponding types. Helps with better docs
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3910 >
2024-08-01 11:06:33 +00:00
Bilal Elmoussaoui
716f23c7c1
cogl/pixel-format: Make CAN_HAVE_PREMULT an inlined function
...
To avoid exposing the function macro in the gir file & so the docs
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3910 >
2024-08-01 11:06:33 +00:00