Simon Ser
f84f7c7710
wl-drm: use resource interface
...
Instead of hardcoding builtin resource types in
wlr_buffer_from_resource(), use the modular resource interface.
2022-11-17 19:55:19 +00:00
Simon Ser
772066a174
linux-dmabuf-v1: use resource interface
...
Instead of hardcoding builtin resource types in
wlr_buffer_from_resource(), use the modular resource interface.
2022-11-17 19:55:19 +00:00
Kirill Primak
c2fb5289c2
xdg-shell: send invalid_size errors
2022-11-17 10:03:52 +00:00
Simon Ser
6c3d6be74b
output: drop wlr_output_damage_whole()
...
This function is not used anymore. Backends have no good reason to
damage outputs.
2022-11-17 09:17:32 +00:00
Simon Ser
ef5e2cc5e3
output: call wlr_output_update_enabled() after commit
...
Backends no longer need to manually call wlr_output_update_enabled()
in their commit hook: wlr_output will take care of that.
2022-11-17 09:12:25 +00:00
bi4k8
8b12037cad
wlr_seat: clear drag->seat_client
when destroyed
...
This was previously a use-after-free in `wlr_drag.c`.
2022-11-16 01:56:18 +00:00
Alexander Orzechowski
265439600e
output: Initialize request_state
2022-11-15 12:00:47 -05:00
Simon Ser
270b8dd342
shm: allow accessing multiple shm mapping concurrently
...
Use a basic linked list to store the currently active mappings.
Note that we don't actually need to implement a full lock-free
atomic linked list here. The signal handler will never write to
the list, it will only read it. Only the main thread will write.
We need to always expose a consistent view of the list to the
signal handler (the main thread might be interrupted at any point
by the signal handler).
2022-11-15 16:30:00 +00:00
Simon Ser
6c277e3c39
buffer: drop wlr_shm_client_buffer
...
It's been superseded by wlr_shm.
2022-11-15 16:30:00 +00:00
Simon Ser
0ae3c7b1a2
Introduce wlr_shm
...
This is a re-implementation of wl_shm. The motivations for using
this over the one shipped in libwayland are:
- Properly handle SIGBUS when accessing a wl_buffer's underlying
data after the wl_buffer protocol object has been destroyed.
With the current code, we just crash if the client does that
and then shrinks the backing file.
- No need to fight the wl_shm_buffer API anymore. This was awkward
because we weren't notified when clients created a wl_shm buffer,
and this doesn't play well with our wlr_buffer abstraction.
- Access to the underlying FD. This makes it possible to forward
the wl_shm buffer to a parent compositor with the Wayland/X11
backends.
- Better stride checks. We can use our format table to ensure that
the stride is consistent with the bpp and width.
2022-11-15 16:30:00 +00:00
Simon Ser
48541d2f2e
scene: check wlr_renderer_begin return value
2022-11-15 15:50:19 +00:00
Simon Ser
45159f8708
output: check wlr_renderer_begin return value
2022-11-15 15:50:19 +00:00
Simon Ser
bf623ec782
content-type-v1: add version param to wlr_content_type_manager_v1_create()
2022-11-15 16:43:04 +01:00
Simon Ser
ff55663906
output: introduce request_state event
...
This allows backends to request the compositor to change the state
of an output.
References: https://github.com/swaywm/wlroots/issues/2300#issuecomment-761819673
2022-11-15 15:39:55 +00:00
Simon Ser
024627e872
content-type-v1: new protocol implementation
...
References: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/150
2022-11-15 15:36:09 +00:00
Simon Ser
258bf9be1e
compositor: drop wlr_surface.{sx,sy}
...
The concept of a persistent accumulated surface offset is wrong
from a protocol point-of-view. wl_surface.offset is tied to a
commit, its interpretation depends on the surface role.
For example, with the following sequence:
wl_surface@1.offset(1, 1)
wl_surface@1.commit()
wl_pointer@2.set_cursor(wl_surface@1, 42, 42)
The final cursor hotspot is (42, 42): the commit which happened
before the set_cursor request has no impact on the hotspot
computation.
The wlr_output_cursor logic already uses wlr_surface.current.{dx,dy}.
wlr_scene's drag icon doesn't, update it accordingly.
2022-11-15 13:41:09 +00:00
Alexander Orzechowski
c8a5dfcc87
wlr_scene: Add drag icon helper
2022-11-14 15:44:43 +00:00
Simon Ser
9f793d3503
layer-shell-v1: specify version in constructor
...
This allows compositors to indicate which features they support,
and is required to eventually make this API stable.
References: https://github.com/swaywm/sway/issues/7260
2022-11-14 09:52:13 +01:00
Simon Ser
2b22a10478
scene: constify region APIs
2022-11-11 23:11:17 +00:00
Simon Ser
c5d79bfb26
region: constify
2022-11-11 23:11:17 +00:00
Simon Ser
fe4225d5de
output: constify damage APIs
2022-11-11 23:11:17 +00:00
Simon Ser
9e10e9af7f
output-damage: constify wlr_output_damage_add()
2022-11-11 23:11:17 +00:00
Simon Ser
fb7bd920a6
damage-ring: constify wlr_damage_ring_add()
2022-11-11 23:11:17 +00:00
Simon Ser
93597952aa
buffer: constify wlr_client_buffer_apply_damage()
2022-11-11 23:11:17 +00:00
Alexander Orzechowski
c58ad0f171
wlr_scene: Remove duplicate buffer check when submitting a new buffer
...
wlr_buffer allows mutation during its lifetime. This happens for
wlr_client_buffer which fixes damage tracking issues.
2022-11-11 15:37:22 +00:00
Alexander Orzechowski
ea40ba4f6a
wlr_scene: Fix texture reuse
...
Add private interface to ignore a buffer that's locking a client_buffer
for damage tracking. This should eventually be replaced by wlr_raster.
2022-11-11 00:08:04 +00:00
Simon Ser
440d7fa072
scene: destroy addons before cleaning up internal state
...
This allows addons to access wlr_scene_node/wlr_scene_surface
fields to clean up themselves.
2022-11-08 16:47:59 +00:00
Simon Ser
24c149fefb
scene: fix whitespace
2022-11-08 16:47:59 +00:00
Kirill Primak
123a08b448
scene: fix output damage expansion
...
This fixes e.g. `weston-simple-damage --use-viewport` which technically
renders at the buffer scale of 0.5.
2022-11-08 06:37:42 +00:00
Kirill Primak
388de59df3
compositor: use the correct input region
2022-11-07 21:06:12 +00:00
Kirill Primak
c09d3450d4
compositor: enforce surface destruction order
2022-11-06 17:00:00 +03:00
Kirill Primak
099b9de752
compositor: drop role object NULL checks in handlers
...
Instead, move the check to the caller.
2022-11-06 17:00:00 +03:00
Kirill Primak
acd5a64fd1
xdg-shell: use role object destroy handler
2022-11-06 17:00:00 +03:00
Kirill Primak
92fbfda2ca
drag-icon: use role object destroy handler
2022-11-06 17:00:00 +03:00
Kirill Primak
75af6a0a39
input-method: use role object destroy handler
2022-11-06 17:00:00 +03:00
Kirill Primak
bcf6b2bbf8
session-lock: use role object destroy handler
2022-11-06 17:00:00 +03:00
Kirill Primak
2518ace573
subcompositor: use role object destroy handler
2022-11-06 17:00:00 +03:00
Kirill Primak
3da2cf3eb3
layer-shell: use role object destroy handler
2022-11-06 17:00:00 +03:00
Kirill Primak
756260ac05
compositor: introduce wlr_surface_destroy_role_object()
2022-11-06 14:16:05 +03:00
Kirill Primak
1243a855d4
xdg-shell: fix geometry types
2022-11-05 18:30:09 +00:00
Kirill Primak
92e3c5b798
scene: fix buffer source box transforming
2022-11-05 14:44:57 +03:00
Isaac Freund
a773231c42
wlr-output-management: implement adaptive sync
...
Version 4 of the protocol adds support for reporting/setting adaptive
sync state of outputs. Implement these new requests/events in wlroots.
2022-10-24 16:19:25 +00:00
Alexander Orzechowski
c2d2773df5
wlr_scene: Handle fractional scaling better
...
Try to alleviate scaling inaccuracies by implementing a fudge factor.
2022-10-22 19:13:21 +00:00
Simon Ser
f0ee563416
output: try to use fixed mode in wlr_output_set_custom_mode()
...
If a fixed mode matching the user requirements is available, use
that. This avoids generating the mode with GTF or CVT in the DRM
backend, and instead uses mode timings advertised by the output.
References: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3514
2022-10-20 09:49:16 +02:00
Alexander Orzechowski
c07424411a
wlr_scene: Destroy the texture when setting a new buffer.
...
Fixes: https://github.com/labwc/labwc/issues/587
Fixes: f0e31e806f
(wlr_scene: Fix not updating the scene node when setting a new buffer)
2022-10-14 20:11:28 +00:00
Simon Ser
3a949ea8eb
idle-notify-v1: new protocol implementation
...
References: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/29
2022-10-14 13:36:15 +00:00
Kirill Primak
a049d66dd7
xdg-toplevel: send invalid_parent error
2022-10-14 10:57:49 +00:00
Alexander Orzechowski
5ba6cf517b
wlr_scene: use wl_container_of() instead of casts
2022-10-13 16:36:05 +00:00
Simon Ser
650f955507
output: fix crash in output_test_with_back_buffer()
...
The output->impl->test check has been removed, but
output_test_with_back_buffer() hasn't been updated accordingly.
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3506
Fixes: 3be6658ee7
("output: allocate swapchain on first commit")
2022-10-10 12:08:06 +02:00
Alexander Orzechowski
99f55303aa
wlr_scene: Apply source box translation
2022-10-10 08:09:55 +00:00