Kirill Primak
a3489f2c64
xdg-shell: improve unmapping logic slightly
2023-03-12 11:09:36 +00:00
Simon Ser
1b6fac4aa6
output-layer: require all layers in wlr_output_state.layers
...
- Simplifies the backends
- Avoids having two ways to do the same thing: previously one could
disable a layer by either omitting it from wlr_output_state.layers,
or by passing a NULL buffer
- We can change our mind in the future: we can allow users to omit
some layers and define a meaning without breaking the API.
References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4017#note_1783997
2023-03-10 11:16:01 +00:00
Isaac Freund
87969c1c7c
xdg-decoration: send missing protocol errors
2023-03-10 11:44:20 +01:00
Kirill Primak
039cca8a51
xwm: emit new_surface/destroy on associate/dissociate
2023-03-09 18:51:47 +00:00
Kirill Primak
ad51983b23
xwm: make atom_map static
2023-03-09 18:51:47 +00:00
Alexander Orzechowski
9ac94516b8
wlr_scene: Skip direct scanout if there is no damage
2023-03-09 05:38:53 +01:00
Kirill Primak
774d2c82f0
xwm: remove misleading comment
...
The surfaces are stored in the bottom-to-top order, as specified
in include/xwayland/xwm.h and expected by
wlr_xwayland_surface_restack().
2023-03-07 17:51:27 +00:00
Simon Ser
38839ac536
gamma-control-v1: simplify get_gamma_control error handling
...
Allocate resources only after checking the request.
2023-03-06 13:23:51 +01:00
Simon Ser
9108717d5d
gamma-control-v1: fix handling of duplicate control
...
When a new client comes in and tries to create a
zwlr_gamma_control_v1 object for an output which already has one,
we were destroying the old object and early-returning. The early
return causes the new object to not be set up properly: it's not
inserted in the list and doesn't get the gamma_size event.
Fix this by destroying the new object, and leave the old object
intact, which is what was the intent I think.
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3605
2023-03-06 11:40:48 +01:00
Kirill Primak
3a200aa279
tinywl: init server to zeros
...
This fixes e.g. accessing grabbed_view on a toplevel unmap if no
toplevel was grabbed before.
2023-03-04 17:01:11 +03:00
Isaac Freund
5ae17de23f
xdg-shell: improve validation of resize edges
...
The current validation doesn't catch some invalid values such as 3 or 7.
2023-03-02 21:31:51 +01:00
Simon Ser
97c8ad7c65
backend/wayland: fix leak of some globals
...
Fix a few globals which weren't properly cleaned up. Discovered
in [1].
[1]: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3604
2023-03-01 16:07:54 +01:00
Simon Ser
cab47d33e2
util/log: prefix WLR_REL_SRC_DIR with underscore
...
Just like _WLR_FILENAME and _WLR_ATTRIB_PRINTF, this makes it more
obvious that this isn't part of our API.
2023-03-01 00:52:18 +01:00
Simon Ser
af5cc860e1
backend/wayland: destroy zwp_linux_buffer_params_v1 objects
...
Don't leak these.
2023-02-28 20:05:46 +01:00
Simon Ser
a160304289
backend/drm: use libdisplay-info for CVT mode generation
2023-02-28 14:44:02 +00:00
Simon Ser
35da997001
backend/drm: use libdisplay-info to parse EDID
2023-02-28 14:44:02 +00:00
Simon Ser
40117e1e0d
render/vulkan: prefer render node for wlr_renderer_get_drm_fd()
...
Instead of returning a primary node from wlr_renderer_get_drm_fd(),
prefer to return a render node if any.
2023-02-28 14:25:21 +00:00
Simon Ser
8db0d82890
examples/dmabuf-capture: fix frame_number deprecated in FFmpeg 6.0
...
Fixes the following error:
../examples/dmabuf-capture.c:524:33: error: 'frame_number' is deprecated [-Werror=deprecated-declarations]
524 | ctx->avctx->frame_number, get_fifo_size(&ctx->vid_frames));
| ^~~
2023-02-28 11:57:07 +01:00
Simon Ser
bec94cc040
backend: move #ifdefs to nested functions
...
Instead of littering #ifdefs everywhere, move them to the dedicated
attempt_XXX_backend() functions. This makes the logic in
wlr_backend_autocreate() more readable, and provides better error
messages when the X11/Wayland backends are disabled at compile-time,
or when WLR_BACKENDS contains a backend disabled at compile-time.
2023-02-27 11:33:52 +01:00
Simon Ser
8acaabcbab
backend: make wlr_backend_autocreate() fail when DRM is missing
...
When we change the required dependencies for the DRM backend,
Meson might auto-disable the backend for users missing the new
requirements. This results in confused users [1] because they don't
notice the "drm-backend: NO" line burried in the Meson logs, and
then get a black screen when starting the compositor.
Update wlr_backend_autocreate() to refuse to create a backend with
only libinput (without DRM).
Users really wanting to start their compositor with a libinput
backend and without a DRM backend can manually set WLR_BACKENDS.
[1]: https://github.com/swaywm/sway/issues/7457
2023-02-27 11:18:58 +01:00
Simon Ser
5079000e49
output: allow modeset with buffer while frame is pending
...
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3600
2023-02-26 18:42:31 +01:00
Simon Ser
ab7eabac84
output: leverage wlr_output_configure_primary_swapchain()
...
Replace our current logic to setup the primary swapchain with
wlr_output_configure_primary_swapchain().
- Removes some code, reducing duplication
- Stop overwriting wlr_output.swapchain with a yet-to-be-tested
swapchain: remove the error_destroy_swapchain label.
2023-02-24 18:22:20 +00:00
Simon Ser
fef8ab22e3
output: introduce wlr_output_configure_primary_swapchain()
...
The goal is to simplify wlr_output by moving all of its rendering
API into separate helpers. Here is a first step to sunset
wlr_output_attach_render(). Instead, compositors call
wlr_output_configure_primary_swapchain(), wlr_swapchain_acquire(),
wlr_renderer_begin_with_buffer() and wlr_output_attach_buffer().
Note that compositors can supply a base struct wlr_output_state.
This is useful to allocate a buffer suitable for submission with
a modeset, for instance.
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3079
References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3197
References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3984
2023-02-24 18:22:20 +00:00
Jan Beich
59acc69737
vulkan: silence -Wint-conversion on 32-bit architectures
...
render/vulkan/renderer.c:388:70: error: incompatible pointer to integer conversion passing 'void *' to parameter of type 'VkFence' (aka 'unsigned long long') [-Werror,-Wint-conversion]
VkResult res = vkQueueSubmit(renderer->dev->queue, 1, &submit_info, NULL);
^~~~
render/vulkan/renderer.c:1141:81: error: incompatible pointer to integer conversion passing 'void *' to parameter of type 'VkFence' (aka 'unsigned long long') [-Werror,-Wint-conversion]
VkResult res = vkQueueSubmit(renderer->dev->queue, submit_count, submit_infos, NULL);
^~~~
/usr/include/sys/_null.h:34:14: note: expanded from macro 'NULL'
#define NULL ((void *)0)
^~~~~~~~~~~
/usr/local/include/vulkan/vulkan_core.h:4054:49: note: passing argument to parameter 'fence' here
VkFence fence);
^
Fixes: a8a194d695
("render/vulkan: switch to timeline semaphores")
2023-02-24 16:41:40 +00:00
Simon Ser
8619ffab21
swapchain: remove allocator listener on destroy
...
Past that point the wlr_allocator is gone and the listeners are
invalidated.
2023-02-24 00:07:41 +01:00
Simon Ser
254c5fc752
Switch to "meson setup"
...
Fixes this warning:
WARNING: Running the setup command as `meson [options]` instead of `meson setup [options]` is ambiguous and deprecated.
2023-02-22 11:01:04 +01:00
Simon Ser
b33ab26fe7
render/swapchain: make public
...
We've had this struct for a while. It'd be useful for compositors
if they want to manage the swap chains themselves instead of being
forced to use wlr_output's. Some compositors might also want to use
a swapchain without an output.
2023-02-21 17:14:31 +01:00
Simon Ser
c667e64892
backend: disable DRM backend monitor when WLR_DRM_DEVICES is used
...
WLR_DRM_DEVICES specifies a static list of DRM devices to open
at startup.
Do not create DRM backends for hotplugged DRM devices when it's
set.
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3595
2023-02-21 12:55:26 +01:00
Simon Ser
7303e13808
backend: avoid adding NULL backend in attempt_backend_by_name()
2023-02-21 12:52:20 +01:00
Simon Ser
2849712356
backend: create DRM backend monitor when WLR_BACKENDS is used
2023-02-21 12:51:46 +01:00
Simon Ser
3874577d3c
output-layer: document interactions with screen capture
...
When e.g. screencopy-v1 is active, callers are responsible for
disabling output layers.
2023-02-21 10:35:30 +00:00
Simon Ser
bea6bee55d
backend/headless: unconditionally accept all output layers
...
We don't need to do anything special to handle these.
2023-02-21 10:12:35 +00:00
Simon Ser
8338d17d7e
backend/drm: drop wlr_drm_layer.pending_{width,height}
...
No need to store this info in struct wlr_drm_layer. We can just
extract the size when we need it.
2023-02-21 09:45:47 +00:00
Simon Ser
7215bd1e0f
output: expose wlr_output_state_set_buffer()
2023-02-21 09:43:43 +00:00
Simon Ser
4629d0ef40
output: expose wlr_output_state_finish()
...
Same as the original function, but check for the bitfield before
calling pixman_region32_fini(), because that function expects an
initialized region.
2023-02-21 09:43:43 +00:00
Simon Ser
d25ab03326
screencopy-v1: drop unnecessary pixman_region32_t casts
...
The Pixman API now accepts const parameters.
2023-02-21 09:37:59 +00:00
Simon Ser
bbd5145d8a
backend/drm: drop unnecessary pixman_region32_t casts
...
The Pixman API now accepts const parameters.
2023-02-21 09:37:59 +00:00
John Lindgren
7d90cd055d
xwayland: Send synthetic ConfigureNotify per ICCCM 4.1.5
...
X11 clients expect a ConfigureNotify after a ConfigureRequest. If
the compositor/window manager chooses not to honor the request
(e.g. due to the window being maximized), XWayland will not send a
"real" ConfigureNotify event and the window manager is expected to
send a synthetic event instead. Otherwise, the X11 client is left
waiting and may not repaint its window properly.
For comparison, see Openbox's client_configure() or Weston's
weston_wm_window_send_configure_notify().
v2: Move logic to wlr_xwayland_surface_configure()
2023-02-21 09:32:06 +00:00
Alexander Orzechowski
3ef9f91283
wlr_scene: Add dmabuf_feedback helper
2023-02-20 17:21:17 -05:00
Alexander Orzechowski
4ddc20e14c
wlr_scene: Extract considering logic for direct scanout
2023-02-20 16:53:59 -05:00
Alexander Orzechowski
323f0b94db
wlr_scene: Cleanup header includes
...
We don't need to pull wlr_compositor.
2023-02-20 16:53:59 -05:00
Simon Ser
9a425841b0
examples/output-layers: relay feedback events
2023-02-20 18:38:57 +01:00
Simon Ser
849c362ffb
linux-dmabuf-v1: add helper for output layer feedback events
2023-02-20 18:38:57 +01:00
Simon Ser
22d9df2af4
backend/drm: send output layer feedback events
2023-02-20 18:38:57 +01:00
Simon Ser
e1335a792a
output-layer: add feedback event
2023-02-20 18:38:57 +01:00
Simon Ser
4d6fbb2289
backend/drm: add support for output layers
2023-02-20 18:38:57 +01:00
Simon Ser
2398621b8b
backend/drm: add libliftoff composition layer
...
This will be useful for implementing the output layers API.
2023-02-20 18:38:57 +01:00
Simon Ser
9d43e7e4d6
backend/drm: add libliftoff interface
2023-02-20 18:38:57 +01:00
Simon Ser
b4e9487312
backend/drm: init wlr_drm_plane for all plane types
2023-02-20 18:38:57 +01:00
Simon Ser
c3d969d2d4
examples/output-layers: new example
2023-02-20 18:38:57 +01:00