Commit graph

2509 commits

Author SHA1 Message Date
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
Alexander Orzechowski
364d7cba42 wlr_scene: Apply output damage once
We would apply it twice if we failed direct scanout. Once when we attempt
direct scanout and again when we composite.
2023-12-04 06:58:35 -05:00
Alexander Orzechowski
fe8916fef0 wlr_scene: Don't damage whole damage ring when exiting direct scanout
Direct scanout damage will just accumulate on the damage ring while in
direct scanout and properly damage when we exit anyway. On the flip side
since we now manage backend damage submission ourselves, this won't break
that either.
2023-12-03 05:29:05 +00:00
Alexander Orzechowski
0619c99dc7 wlr_scene: Use wlr_damage_ring_rotate_buffer()
Compositors who use _build_state are no longer required to call
damage_ring_rotate themselves. This is a minor breaking change.
2023-12-03 05:29:05 +00:00
Alexander Orzechowski
06d301bf1a wlr_scene: Track output damage separately
The damage ring is only supposed to keep track of damage within
the swapchain
2023-12-03 05:29:05 +00:00