Commit Graph

2513 Commits

Author SHA1 Message Date
Leo Li 71fb55f3bf render/pixel-format: Move has_alpha into it's own array
Some opaque pixel formats (nv12, p010) require per-plane bytes_per_block
info. However, it doesn't make sense to store them in
wlr_pixel_format_info, as they will never be useful (currently, this
info is used for shm, which doesn't have a concept of multi-planar
buffers.)

Let's define a separate array and function for determining whether a
pixel format has alpha.
2024-01-31 13:47:17 -05:00
Andri Yngvason 3a91dc1b48 Create & implement transient seat protocol 2024-01-31 08:22:05 +00:00
Simon Ser 435ca39960 linux-dmabuf-v1: bump to v5
We already send a protocol error when the modifiers aren't the same
for all planes.

References: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/224
2024-01-31 08:20:17 +00:00
Simon Ser 6991f03767 linux-dmabuf-v1: switch to stable
The protocol is no longer unstable.
2024-01-31 08:20:17 +00:00
Alexander Orzechowski 8dff1bb9bd wlr_damage_ring: Replace wlr_damage_ring_rotate_buffer with original list impl
The seq based implementation is complex to reason about and doesn't even
work.
2024-01-29 19:17:39 +00:00
Kirill Primak 4688a371e0 compositor: don't get buffer from pending buffer resource too early
Fixes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3795
2024-01-27 17:48:07 +03:00
Simon Ser 4ec901bb33 scene: release shm buffers once uploaded
Once a shm buffer is uploaded there's no reason for wlr_scene_buffer
to keep it locked any further. Allow the compositor to re-use it.
2024-01-27 12:21:54 +00:00
Kirill Primak 0052078bd3 compositor: introduce wlr_surface_reject_pending() 2024-01-27 12:05:05 +00:00
Alexander Orzechowski cca2bfbe92 output: Drop pending state 2024-01-24 18:46:45 +00:00
Simon Ser 00bb1b0f84 seat/pointer: add support for axis_relative_direction event 2024-01-23 08:37:29 +00:00
Simon Ser b80337a8f2 xdg-shell: assert that configure events carry positive or zero sizes
Negative values here would indicate a compositor bug. For xdg_popup,
zero values are not allowed.
2024-01-22 17:49:38 +01:00
Kirill Primak be1c48cbfb layer-shell: forbid set_size with values ≥INT32_MAX 2024-01-22 19:01:57 +03:00
Kirill Primak 0b090c83fb single-pixel-buffer: send wl_buffer.release 2024-01-18 21:20:32 +03:00
Kirill Primak 58bb49a00b security-context-v1: fix possible leaks on wl_client_create() and state copying errors 2024-01-17 15:44:37 +00:00
Isaac Freund 7129eaa1f2 keyboard: fix type of wlr_keyboard_modifiers.group
This isn't a breaking change since both of these typedefs are uint32_t
but this should make things a bit less confusing for readers.
2024-01-17 11:00:52 +03:00
Simon Ser a0b1329ee6 Fix bool return types
This makes wlroots build in C23 mode.

C23 is more strict and rejects implicit conversions from bool to a
pointer.
2024-01-04 22:24:06 +01:00
Simon Ser ab924064f2 scene: drop wlr_scene_set_presentation() 2023-12-27 13:41:20 +01:00
Simon Ser d68ba9d6c2 presentation-time: drop wlr_presentation arg
There can only be a single presentation-time global advertised to
clients, this it's unnecessary to pass around the wlr_presentation
pointer.
2023-12-27 13:41:01 +01:00
Simon Ser 1968ada213 tearing-control-v1: synchronize state with surface 2023-12-25 18:55:30 +01:00
Simon Ser 0ea6b6e2cc session-lock-v1: use wlr_surface_synced 2023-12-25 18:55:21 +01:00
Simon Ser aa32d1a127 session-lock-v1: drop negative buffer size checks
The buffer size will never be negative, and the negative checks
are distracting from the real checks here.
2023-12-25 18:54:11 +01:00
Simon Ser dc3b2b9439 content-type-v1: use wlr_surface_synced 2023-12-25 11:47:15 +01:00
Simon Ser 90e12fb978 pointer-constraints-v1: use wlr_surface_synced 2023-12-25 11:47:15 +01:00
Simon Ser a6122c3ec5 layer-shell-v1: use wlr_surface_synced 2023-12-25 11:47:15 +01:00
Simon Ser 0e3d2222c2 xdg-decoration: use wlr_surface_synced for toplevel 2023-12-25 11:47:15 +01:00
Simon Ser 96aec06b0a subcompositor: use wlr_surface_synced 2023-12-25 11:47:15 +01:00
Simon Ser 1c3c24825f presentation-time: use wlr_surface_synced 2023-12-25 11:47:15 +01:00
Simon Ser 4b3553409a xdg-shell: use wlr_surface_synced for popups 2023-12-25 11:47:15 +01:00
Simon Ser 9201431c29 xdg-shell: use wlr_surface_synced for toplevel 2023-12-25 11:47:15 +01:00
Simon Ser 69d9a4e2cb xdg-shell: use wlr_surface_synced for wlr_xdg_surface 2023-12-25 11:47:15 +01:00
Simon Ser 7e1ae5548c compositor: add wlr_surface_role.client_commit 2023-12-25 11:47:15 +01:00
Simon Ser d847516765 compositor: add wlr_surface_synced
A lot of protocols extend the wl_surface state. Such protocols need
to synchronize their extended state with wl_surface.commit and
cached states. Add a new utility for this purpose.
2023-12-25 11:47:15 +01:00
Simon Ser 34d5af4172 compositor: add wlr_surface_state_has_buffer() 2023-12-25 11:47:15 +01:00
Simon Ser 66b6c349e7 compositor: remove unnecessary wlr_surface.has_buffer
No need to store this bit, we can infer it from buffer_width and
buffer_height.
2023-12-25 11:43:41 +01:00
Simon Ser cd157a0bd9 compositor: adjust surface_state_move() comment 2023-12-25 11:43:41 +01:00
Simon Ser da5f53b461 pointer-constraints-v1: reset committed on commit
Knowing which fields changed in the last commit is more useful than
knowing which fields were ever set on the surface.
2023-12-25 10:36:26 +00:00
Simon Ser 85f44f3684 pointer-constraints-v1: add cursor_hint.enabled
This allows compositors to check whether the cursor hint is set.
2023-12-25 10:36:26 +00:00
Simon Ser df27b29d49 compositor: reset wlr_surface.current.committed on commit
Knowing which fields changed in the last commit is more useful than
knowing which fields were ever set on the surface.
2023-12-25 10:36:26 +00:00
Simon Ser 11e3c376e7 output-layout: fix missing global for outputs with a custom mode
Before we were populating wlr_output.current_mode with a generated
fixed mode when a custom mode was committed in the DRM backend. But
that's no longer the case: now a custom mode behaves the same under
the DRM backend and other backends.

wlr_output_layout was still assuming that an output without a
current_mode was disabled. Fix that assumption.

Fixes: 5567aefb1c ("backend/drm: Don't add pollute fixed modes list with custom modes")
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3743
2023-12-21 11:28:58 +01:00
Guido Günther b032161785 input-method: Simplify resetting of input state
We have current and pending state and the code uses struct
assignments between them and resets and frees in multiple places.

Introduce a reset() function so we can unify that.
2023-12-18 16:21:48 +01:00
pastel raschke 3bf9000a52 input-method-v2: validate commit serial 2023-12-18 11:15:51 +01:00
pastel raschke 6ee5bd9eee input-method-v2: free current strings on commit 2023-12-18 11:14:41 +01:00
Simon Ser 81f5607ad9 input-method-v2: drop unnecessary variable and cast 2023-12-18 11:14:08 +01:00
Simon Ser d7ac8c0cc1 cursor: drop unnecessary commented code
This is unused.
2023-12-12 19:39:33 +00:00
Simon Ser 7ef62cc995 cursor: fix initial cursor position for new outputs
The fresh new wlr_output_cursor is positioned at (0, 0).

Call wlr_output_cursor_move() after creating the wlr_output_cursor
to fix this.

Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3777
2023-12-12 19:39:33 +00:00
Simon Ser 3475b1880f linux-dmabuf-v1: ignore scanout output for secondary DRM backends
We don't support direct scanout on such backends yet.
2023-12-12 14:42:52 +00:00
Simon Ser 6a2ff0dffe compositor: drop surface precommit event
This is unused.
2023-12-04 19:32:44 +01:00
Simon Ser 78836298ef cursor: send surface scale events
wlr_cursor is responsible for sending enter/leave events, but
doesn't send fractional-scale-v1 and wl_surface.preferred_buffer_scale
events. This is not an easy thing to do from a compositor, so let's
just do it in wlr_cursor itself.
2023-12-04 15:39:04 +00:00
Alexander Orzechowski 6287b61025 wlr_damage_ring: Fix inverted conditional 2023-12-04 07:16:46 -05:00
Alexander Orzechowski 62169bf5ac wlr_scene: fix transformed outputs backend damage clearing
When we cleared the pending backend damage when the output committed,
we would not take into account the output transform. It's easiest to fix
this by just changing pending_commit_damage to always have transformed
coordinates.
2023-12-04 07:06:35 -05:00