Väinö Mäkelä
247e86dca9
keyboard-shortcuts-inhibit: Handle inert seats
2023-06-03 10:43:12 +00:00
Väinö Mäkelä
16948c7369
input-method: Handle inert seats
2023-06-03 10:43:12 +00:00
Väinö Mäkelä
126222884d
wlr_idle: Handle inert seats
2023-06-03 10:43:12 +00:00
Väinö Mäkelä
f988a75a80
tablet: Handle inert seats
2023-06-03 10:43:12 +00:00
Väinö Mäkelä
5120addfbb
data-control: Handle inert seats
2023-06-03 10:43:12 +00:00
Väinö Mäkelä
f97f4496de
data-device: Handle inert seats
2023-06-03 10:43:12 +00:00
Väinö Mäkelä
0e5f76186e
seat: Allow binding to inert seats
...
If a seat is destroyed while a client is trying to bind it, wlroots
needs to create an inert seat resource instead of crashing.
2023-06-03 10:43:12 +00:00
Simon Ser
52b93f7eb4
output/cursor: fix scale and transform
...
Many issues here:
- wlr_output_cursor_set_buffer() takes a buffer already scaled for
the output, not a buffer with scale=1.
- wlr_output_cursor.{width,height,hotspot_x,hotspot_y} are in output
buffer coordinates.
- render_cursor_buffer() had hardcoded no-ops for scale and
transform, instead of using the cursor surface's.
Fixes: b64e7e88bf
("output: add output_cursor_set_texture()")
2023-06-02 22:33:40 +00:00
Simon Ser
09c87cec3f
cursor: fix wl_pointer.set_cursor hotspot updates
...
A client might update the cursor with the same wl_surface as
before, but with a different hotspot. Don't ignore such updates.
Fixes: 9c9e3f6263
("cursor: ignore wlr_cursor_set_surface() with same surface")
2023-06-02 22:33:40 +00:00
Kirill Primak
8c0eeb6a86
session-lock: fix buffer check
...
If the first commit has no buffer, the unmap hook won't catch it. Check
in the commit hook instead.
2023-06-02 23:26:38 +03:00
Kirill Primak
e75407fd4d
session-lock: remove unused wlr_session_lock_surface_v1.events.map
2023-06-02 23:20:05 +03:00
Kirill Primak
d086ee1b9e
compositor: remove wlr_surface_role.precommit
...
It was previously used to handle unmapping properly but is obsolete now.
2023-06-02 21:04:16 +03:00
Kirill Primak
af4181f388
drag: use unified map logic
2023-06-02 17:26:18 +00:00
Kirill Primak
743da5c0ae
input-method: use unified map logic
2023-06-02 17:26:18 +00:00
Kirill Primak
229abfae0c
session-lock: use unified map logic
2023-06-02 17:26:18 +00:00
Kirill Primak
c63f3659c5
layer-shell: use unified map logic
2023-06-02 17:26:18 +00:00
Kirill Primak
b0437fc416
xdg-shell: use unified map logic
2023-06-02 17:26:18 +00:00
Kirill Primak
c590bb600f
subcompositor: use unified map logic
2023-06-02 17:26:18 +00:00
Kirill Primak
6b40e08148
compositor: introduce unified map logic
2023-06-02 17:26:18 +00:00
Simon Ser
6668c822b3
cursor: unset wlr_output_cursor.texture on surface destroy
...
When the surface is destroyed, its current wlr_texture is about to
get destroyed as well. Reset wlr_output_cursor.texture to prevent
use-after-free.
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3652
2023-06-02 16:27:54 +00:00
Simon Ser
9c9e3f6263
cursor: ignore wlr_cursor_set_surface() with same surface
...
Avoids damaging the output and rendering the cursor again if it
hasn't changed.
2023-06-02 16:27:54 +00:00
Simon Ser
5bcd537ff4
output/cursor: use new rendering API
2023-05-30 16:18:19 +00:00
Simon Ser
93a6acae9f
output: add wlr_output_begin_render_pass()
2023-05-30 16:18:19 +00:00
Alexander Orzechowski
95062904c7
wlr_scene: Introduce wlr_scene_buffer_set_opacity
2023-05-30 15:43:29 +00:00
Alexander Orzechowski
2346b90a9f
wlr_scene: Make scene_rect_from_node public
...
This is in an effort to be more consistent with both already public
getters: wlr_scene_buffer_from_node and wlr_scene_tree_from_node
2023-05-30 15:40:41 +00:00
Alexander Orzechowski
88f80c4a7c
wlr_scene: Make scene_tree_from_node public
...
This is to allow for compositors that want to be more implicit about
how their scene is organized. Such a compositor may want to walk up
at a certain scene node to find something such as a surface to focus on.
2023-05-30 15:40:41 +00:00
Simon Ser
2c6aeed7d6
output: use pending render format if any
...
If a modeset contains a render format change, use that instead of
the current one stored in wlr_output.render_format.
This fixes render_bit_depth configuration not being applied without
a second modeset in Sway.
2023-05-26 16:50:58 +00:00
Alexander Orzechowski
d495fb8c04
wlr_{box, fbox}_equal: Consider empty boxes NULL
2023-05-23 17:57:16 +00:00
Simon Ser
96f3f3c92e
render/pixel-format: add support for block-based formats
...
Some formats like sub-sampled YCbCr use a block of bytes to
store the color values for more than one pixel. Update our format
table to be able to handle such formats.
2023-05-21 20:28:45 +00:00
Simon Ser
a0ebc401d0
linux-dmabuf-v1: fix wlr_drm_format_set leak in feedback_compile()
...
Fixes: 43b25fd34e
("dmabuf: Remove assumption that all mods are in fallback tranche")
2023-05-18 11:20:21 +02:00
Austin Shafer
43b25fd34e
dmabuf: Remove assumption that all mods are in fallback tranche
...
According to the spec the compositor should send scanout modifiers in
their respective device tranches, and all other texture modifiers
in the main tranche. Currently wlroots expects all modifiers to be
present in the last (i.e. "fallback") tranche, this removes that assumption
in the feedback compilation stage so that scanout modifiers for secondary
device can be advertised.
"The full-screen feedback parameters have two tranches: one with the
format/modifier pairs supported by the KMS plane, with the scanout flag
set in the tranche_flags event and with tranche_target_device set to the
KMS scan-out device; the other with the rest of the format/modifier
pairs (supported for texturing, but not for scan-out), without the
scanout flag set in the tranche_flags event, an"
2023-05-18 09:08:18 +00:00
Alexander Orzechowski
c4bed48fcc
output_pick_format: Fail if no format could be chosen
2023-05-18 07:05:30 +00:00
Kirill Primak
75293d5fb0
keyboard: use the new data in wlr_keyboard_set_keymap()
...
Fixes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3647
2023-05-18 08:39:24 +03:00
Simon Ser
e2647c5151
keyboard: add support for resetting the keymap
2023-05-17 22:08:34 +00:00
Simon Ser
e725f234d7
keyboard: don't change current keymap on wlr_keyboard_set_keymap() error
...
This function was unsetting the keymap on error. Instead, let's
leave the current keymap untouched on error.
2023-05-17 22:08:34 +00:00
Simon Ser
69aeccddb7
seat/keyboard: allow no keymap
2023-05-17 22:08:34 +00:00
Alexander Orzechowski
300bd80772
wlr_drm_format_set: Store formats on array
2023-05-11 18:25:52 +02:00
Alexander Orzechowski
90d08f8f1c
wlr_drm_format: Rework wlr_drm_format_intersect
...
Now it takes a reference to a destination format
2023-05-11 18:24:43 +02:00
Alexander Orzechowski
340700cb70
wlr_drm_format: Change wlr_drm_format_dup to copy
2023-05-11 18:24:43 +02:00
Alexander Orzechowski
e427e019c4
wlr_drm_format: Don't take double pointer in wlr_drm_format_add
2023-05-11 03:51:01 -04:00
Alexander Orzechowski
b45396c790
wlr_drm_format: Introduce drm_format_finish
2023-05-11 03:51:01 -04:00
Simon Ser
2a1234a820
wlr-export-dmabuf-v1: handle output destroy
...
We were storing a wlr_output without listening for the destroy
event.
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3646
2023-05-10 20:45:48 +00:00
Alexander Orzechowski
18139f4d87
wlr_cursor: Don't multiply hotspot by scale^2
...
We are already multiplying in output_cursor_set_texture
2023-05-08 09:17:22 +00:00
Alexander Orzechowski
47a250ae12
wlr_cursor: Consider surface state when setting new cursor surface
...
Found by inspection
2023-05-06 20:55:11 +00:00
Simon Ser
d933f5204b
output: drop wlr_output_cursor_set_surface
2023-05-06 13:59:05 -04:00
Simon Ser
78afce5e2d
cursor: add surface handling
...
Only rely on wlr_output_cursor_set_texture(), because
wlr_output_cursor_set_surface() will get dropped.
2023-05-06 17:48:56 +00:00
Simon Ser
b64e7e88bf
output: add output_cursor_set_texture()
2023-05-06 17:48:56 +00:00
Alexander Orzechowski
1ee75786b4
drm_format_set_union: Require initialized dst and remove assert
2023-05-04 18:19:33 +00:00
Alexander Orzechowski
ec796afb6e
wlr_compositor: Decide opacity from new has_buffer flag.
...
`wlr_surface_get_texture` will always return NULL if the compositor was
not given a renderer.
2023-05-04 11:53:26 +02:00
Alexander Orzechowski
394accbe4a
wlr_compositer: Keep track if surface has committed a buffer before.
...
This would break if you are running with a NULL renderer.
2023-05-04 11:53:26 +02:00