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
Alexander Orzechowski
cbe8876050
linux_dmabuf_v1: Use wlr_drm_format_set_union
2023-05-03 12:38:28 -04:00
Simon Ser
bf8ae8a036
output/cursor: fix buffer size when nested and scaled
...
The Wayland, X11 and headless backends don't really care about the
cursor size. We were picking a size identical to the texture size
in that case. This is incorrect for LoDPI cursor textures on HiDPI
outputs: in that case, we need to scale up the cursor texture.
Fixes the cursor being chopped off under the Wayland backend with
scale > 1.
2023-05-03 11:32:51 +02:00
Simon Ser
d7fcc1e96f
scene: port to wlr_render_pass
2023-04-25 17:26:35 +02:00
Simon Ser
587852056c
output: add wlr_output_add_software_cursors_to_render_pass()
...
Same as wlr_output_render_software_cursors(), but takes a
struct wlr_render_pass.
2023-04-25 17:26:34 +02:00
Simon Ser
44069dfd5e
output-layer: add cropping support
...
Add a src_box state field. Use the SRC_* KMS props in the DRM
backend, reject the layers in the Wayland backend (for now, we can
support it later via viewporter).
2023-04-20 10:39:46 +02:00
Andri Yngvason
00489b11a0
seat: Provide dummy resources for inert seats
2023-04-18 08:29:30 +00:00
Andri Yngvason
3898bb482d
seat: Let client manage its own resources
...
This makes seat_client resources inert when seats and/or input devices are
destroyed, rather than destroying the resources.
When the client calls e.g. wl_keyboard_release(), it's not expecting the
keyboard global to be already destroyed, so this results in an error such
as this:
wl_display@1: error 0: invalid object 22
2023-04-18 08:29:30 +00:00
Andri Yngvason
1689a3503b
wlr_seat: Extract seat_client_create() function
2023-04-18 08:29:30 +00:00
Alexander Orzechowski
eac2eaa6a9
wlr_scene: Fix potential use-after-free in wlr_scene_buffer_set_buffer
...
Fixes : #3636
2023-04-16 14:01:54 +02:00
Alexander Orzechowski
39be67df46
wlr_scene: Send presentation event before direct scanout output commit
...
We were doing it too late before and surfaces were never getting
the presentation event.
2023-04-14 22:29:24 +02:00
Simon Ser
dae2deb3c9
compositor: add wlr_surface_set_preferred_buffer_transform()
...
References: https://gitlab.freedesktop.org/wayland/wayland/-/merge_requests/220
2023-04-14 17:07:26 +02:00