aboutsummaryrefslogtreecommitdiff
path: root/backend
AgeCommit message (Collapse)Author
2024-02-29backend/libinput: use NULL to indicate missing device nameSimon Ser
libinput guarantees that the name is non-NULL, and an empty string if unset. However wlroots uses NULL to indicate that an input device name is unset.
2024-02-28pointer: drop enum wlr_axis_orientationSimon Ser
Instead, use enum wl_pointer_axis from the Wayland protocol.
2024-02-28pointer: drop enum wlr_axis_relative_directionSimon Ser
Instead, use enum wl_pointer_axis_relative_direction from the Wayland protocol.
2024-02-28pointer: use enum wl_pointer_button_stateSimon Ser
2024-02-28pointer: drop enum wlr_axis_sourceSimon Ser
Instead, use enum wl_pointer_axis_source from the Wayland protocol.
2024-02-27backend/drm: use CRTC pointers instead of indices in realloc_crtcs()Simon Ser
Improves readability, no functional change.
2024-02-27backend/drm: improve CRTC reallocation pretty printingSimon Ser
Only print the list of connectors once, with both the old and new status. Use CRTC object IDs instead of CRTC indices. Make it obvious when a connector keeps the same CRTC.
2024-02-26backend/drm: move primary FB check after pending buffer logicSimon Ser
If a connector has no current/queued buffer, but has a pending buffer in the commit, we need to process that pending buffer before checking pending.primary_fb.
2024-02-26backend/drm: fix primary FB checkSimon Ser
When turning off a CRTC, we don't need a buffer. It doesn't matter whether this is a modeset or not: we always need a buffer even for regular page-flips as long as a connector is active. Fixes: 374daeb25603 ("backend/drm: Ensure a primary fb is available when configuring an output")
2024-02-26backend/drm: use output_pending_enabled()Simon Ser
Use the helper instead of hand-rolling the logic.
2024-02-25backend/drm: Ensure a primary fb is available when configuring an outputAlexander Orzechowski
2024-02-25backend/drm: Remove dead codeAlexander Orzechowski
We can never hit the case where we try to light up an output without a buffer. output_ensure_buffer() will catch this for now, and when that's removed, output_basic_test() will catch this case.
2024-02-25backend/drm: Init connector after we try to allocate a crtc for itAlexander Orzechowski
drm_connect_state_init() will set primary_fd to null if no CRTC is active for the connector and can crash later if the code expects a CRTC (like when lighting up an output).
2024-02-22backend/drm: Remove erroneous freeKenny Levinsen
init_plane tries to free a single plane on error, but this is an element in a calloc'd array by the caller that we should not touch.
2024-02-22backend/drm: Free current_modeinfo on errorKenny Levinsen
2024-02-21backend/drm: don't destroy previous DRM master blobsSimon Ser
On startup, we fetch the previous MODE_ID blob ID so that compositors can keep using the previous mode if they want to. However, that blob doesn't belong to us, it belongs to the previous DRM master. As a result, we get an error when trying to destroy it. Fix this by tracking whether the blob belongs to us or not. Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3811
2024-02-15Define _POSIX_C_SOURCE globallySimon Ser
Stop trying to maintain a per-file _POSIX_C_SOURCE. Instead, require POSIX.1-2008 globally. A lot of core source files depend on that already. Some care must be taken on a few select files where we need a bit more than POSIX. Some files need XSI extensions (_XOPEN_SOURCE) and some files need BSD extensions (_DEFAULT_SOURCE). In both cases, these feature test macros imply _POSIX_C_SOURCE. Make sure to not define both these macros and _POSIX_C_SOURCE explicitly to avoid POSIX requirement conflicts (e.g. _POSIX_C_SOURCE says POSIX.1-2001 but _XOPEN_SOURCE says POSIX.1-2008). Additionally, there is one special case in render/vulkan/vulkan.c. That file needs major()/minor(), and these are system-specific. On FreeBSD, _POSIX_C_SOURCE hides system-specific symbols so we need to make sure it's not defined for this file. On Linux, we can explicitly include <sys/sysmacros.h> and ensure that apart from symbols defined there the file only uses POSIX toys.
2024-02-15backend/drm: skip reset after VT switch if possibleSimon Ser
If all connectors and planes already have the right CRTC set, or are disabled, we can skip the device-wide reset after a VT switch. I've contemplated using a more fine-grained logic to only reset the connectors, CRTCs and planes that need to be migrated. However, writing a correct algorithm for this would be quite involved, and it doesn't seem worth the trouble anyways. Closes: https://github.com/swaywm/sway/issues/7956
2024-02-15backend/drm: fix typo in restore_drm_device() commentSimon Ser
2024-02-15backend/drm: move restore logic to drm.cSimon Ser
We'll need to use a bunch of internal functions from that file in the next commits.
2024-02-14backend/drm: atomically reset state after VT switchSimon Ser
Allows the KMS driver to parallelize the modesets, so should be faster than going through each CRTC one by one.
2024-02-14backend/drm: call get_drm_connector_props() when creating connectorSimon Ser
This function fetches property IDs. These don't change for the lifetime of the connector. Instead of refreshing the property IDs on hotplug (and leaving property IDs unset for disconnected connectors), only fetch the property IDs when we create the connector.
2024-02-14backend/drm: extract logic to build current connector stateSimon Ser
2024-02-14backend/drm: use early return in handle_session_active()Simon Ser
2024-02-14backend/drm: add destroy_blob()Simon Ser
Centralizes the logic to destroy a DRM blob: check whether it's zero, and print a nice error message.
2024-02-14backend/drm: drop wlr_drm_backend arg from create_mode_blob()Simon Ser
No need for this, the backend can be grabbed from the connector.
2024-02-14backend/drm: add drm_page_flip_create()Simon Ser
2024-02-14backend/drm: fix fb_damage_clips_arr memory leakSimon Ser
2024-02-12backend/drm: drop unnecessary _XOPEN_SOURCESimon Ser
We only need base POSIX here.
2024-02-12Add more POSIX compliance macros to fix uClibc supportPaul Cercueil
- Add POSIX 1993.09 compliance macro in source files that use "struct timespec"; - Add POSIX 2001.12 compliance macro in source files that use "struct sigaction" and the SA_SIGINFO macro, or the fchmod() function; - Add POSIX 2008.09 compliance macro in source files that use the getline() function. These compliance macros are enough for wlroots to compile with the git-master version of uClibc-ng. Signed-off-by: Paul Cercueil <paul@crapouillou.net>
2024-02-02allocator: remove backend parameter in allocator_autocreate_with_drm_fdAustin Shafer
Since we only use the backend capabilities here we can simply pass them in directly. This allows other locations to create an allocator even if they don't have a backend. They can simply specify the caps they want instead.
2024-02-01backend/session: add docsSimon Ser
2024-01-31linux-dmabuf-v1: switch to stableSimon Ser
The protocol is no longer unstable.
2024-01-31backend/drm: use wlr_drm_backend.name for fd cloningKirill Primak
This also fixes a memleak.
2024-01-27backend/drm: add support for atomic tearing page-flipsSimon Ser
The kernel patches [1] have been merged. [1]: https://patchwork.freedesktop.org/series/120103/
2024-01-25backend: take wl_event_loop instead of wl_display in wlr_backend_autocreate()Simon Ser
2024-01-25backend/multi: take wl_event_loop instead of wl_displaySimon Ser
2024-01-25backend/drm: drop wl_display argumentSimon Ser
We can grab the event loop from the wlr_session instead.
2024-01-25backend/x11: take wl_event_loop instead of wl_displaySimon Ser
2024-01-25backend/wayland: take wl_event_loop instead of wl_displaySimon Ser
2024-01-25backend/libinput: drop wl_display argumentSimon Ser
We can grab the event loop from the wlr_session instead.
2024-01-25backend/headless: take wl_event_loop instead of wl_displaySimon Ser
2024-01-25backend: stop calling wl_display_terminate()Simon Ser
Leave it up to the compositor to decide what to do when a backend becomes unavailable.
2024-01-25backend: destroy multi backend when primary backend isSimon Ser
This makes it easy for compositors to handle situations where the DRM or libinput backend becomes unavailable. Compositors can listen the destroy event of the multi backend returned by wlr_backend_autocreate() and decide what to do.
2024-01-25backend: make attempt_drm_backend() return the primary backendSimon Ser
We'll need this in the next commit.
2024-01-25backend/multi: emit destroy signal before destroying child backendsSimon Ser
Some users might want to destroy the multi backend when a child backend is being destroyed. However, they can't destroy the multi backend if it's already in the process of being destroyed. The destroy signal was changed to be emitted after destroying child backends in babdd6ccf757 ("backend: fix use-after-free when destroying backends"). However, this was done to accomodate for an old "output_remove" event on backends, which has long been dropped in favor of wlr_output.events.destroy. This patch follows the same principle as 5d639394f3e8 ("types/output: emit destroy event before destroying global").
2024-01-23backend/wayland: populate pointer axis relative directionSimon Ser
2024-01-23backend/libinput: populate pointer axis relative directionSimon Ser
2024-01-17backend/x11: handle touchpoint allocation failureKirill Primak
2024-01-04Fix bool return typesSimon Ser
This makes wlroots build in C23 mode. C23 is more strict and rejects implicit conversions from bool to a pointer.