aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2024-02-23xwayland: add map_request signalJohn Lindgren
For XWayland surfaces that start maximized, it's best to send an initial Configure event to set the size of the surface before mapping it. This reduces visual glitches since the application sees the correct maximized size when performing its initial layout and drawing. wlroots surfaces emit their first "map" event after the XWayland window has already been mapped and the first frame has been drawn & committed. This is too late to send the initial Configure event. So, add a new "map_request" event which is emitted immediately before telling XWayland to map the window. Compositors can connect to this event to send the initial Configure event to an XWayland app based on its requested maximized (or fullscreen) state. Compositors should not place anything visually on the screen at this point but rather wait until the "map" event as before.
2024-02-22xwayland/xwm: Initialize client_id_cookieKenny Levinsen
scan-build is a little confused, thinking xwm->xres value could change during the execution of xwayland_surface_create so client_id_cookie could end up used uninitialized. The struct is just an unsigned int, so no harm in initializing it to get it off the list.
2024-02-22gamma-control-v1: Remove dead variable assignmentKenny Levinsen
2024-02-22render/vulkan: Avoid double-free on calloc errorKenny Levinsen
In query_modifier_support, the calloc for either or both of render_mods and texture_mods may fail, in which case both are freed for convenience. However, if one is non-NULL, vulkan_format_props_finish will try to free it again. NULL them to avoid double-free.
2024-02-22render/drm_format_set: Clean up on union failureKenny Levinsen
If drm_format_set_extend fails, we need to make sure each wlr_drm_format is cleaned up together with the formats array. Finish the set to take care of it.
2024-02-22xwayland/xwm: Allocate to the right variableKenny Levinsen
837060f894a4 made a change to only allocate the xcb_window_t array if it was not going to be zero-sized. It accidentally shadowed the variable so the output of the allocation would never be used. Regressed-by: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4563
2024-02-22xwayland/xwm: Avoid zero-size allocaitonKenny Levinsen
Zero-sized allocations have glibc-specific behavior, so avoid those.
2024-02-22drm-lease-v1: Free the wlr_drm_lease_v1 on errorKenny Levinsen
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-21backend/drm: fix broken link to KMS property docsSimon Ser
The Linux graphics section of 01.org is no more. Link to more official docs instead.
2024-02-21buffer: add single-pixel-buffer-v1 special case in buffer_is_opaque()Simon Ser
2024-02-20scene: ignore duplicate wlr_scene_output_layout_add_output() callsSimon Ser
An assert was added in [1] to avoid tracking the same output multiple times. However, this is cumbersome for compositors [2]: they need to add a special check for this. Additionally, this is inconsistent with wlr_output_layout_add(). [1]: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4380 [2]: https://github.com/cage-kiosk/cage/pull/315
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-15util/log: drop unnecessary _XOPEN_SOURCESimon Ser
snprintf() is actually ISO C99. We still need POSIX for clock_gettime().
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-13ext-foreign-toplevel-list-v1: improve/fix update_state()Kirill Primak
This extracts common string updating logic into a function and fixes a possible NULL dereference.
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-12ext-foreign-toplevel-list-v1: new protocol implementationcolumbarius
This implements the new ext-foreign-toplevel-list-v1 protocol [1]. Implemented analog to the zwlr-foreign-toplevel-management-v1 implementation. The additional _ext_ in the names was added to avoid name collisions. [1]: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/187 Co-authored-by: Leon Henrik Plickat <leonhenrik.plickat@stud.uni-goettingen.de>
2024-02-06pointer-constraints: handle inert pointer resources correctlyKirill Primak
2024-02-06linux_dmabuf_v1: allow callbacks for checking dmabuf importAustin Shafer
2024-02-06xdg-shell: drop automatic surface configurationKirill Primak
Compositors now are expected to wait for an initial commit by checking wlr_xdg_surface.initial_commit on every surface commit and send (schedule) configure events manually.
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-02switch: add docsSimon Ser
2024-02-01backend/session: add docsSimon Ser
2024-02-01compositor: don't handle size or viewport src change in surface_update_damage()Kirill Primak
This is incorrectly leads to buffer reuploading.
2024-02-01compositor: drop wlr_surface.external_damageKirill Primak
2024-02-01cursor: fix and simplify region mappingKirill Primak
Fixes: 4462f5dcb38b8b4ddc4c1eb888aa0d0c859a10a1
2024-01-31render/gles2: Fixup dropping has_alpha from pixel_formatLeo Li
Fixes: 71fb55f3 ("render/pixel-format: Move has_alpha into it's own array")
2024-01-31render/pixel-format: Move has_alpha into it's own arrayLeo Li
Some opaque pixel formats (nv12, p010) require per-plane bytes_per_block info. However, it doesn't make sense to store them in wlr_pixel_format_info, as they will never be useful (currently, this info is used for shm, which doesn't have a concept of multi-planar buffers.) Let's define a separate array and function for determining whether a pixel format has alpha.
2024-01-31Create & implement transient seat protocolAndri Yngvason
2024-01-31linux-dmabuf-v1: bump to v5Simon Ser
We already send a protocol error when the modifiers aren't the same for all planes. References: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/224
2024-01-31linux-dmabuf-v1: switch to stableSimon Ser
The protocol is no longer unstable.
2024-01-31linux-dmabuf-v1: fix include guard nameSimon Ser
2024-01-31backend/drm: use wlr_drm_backend.name for fd cloningKirill Primak
This also fixes a memleak.
2024-01-29wlr_damage_ring: Replace wlr_damage_ring_rotate_buffer with original list implAlexander Orzechowski
The seq based implementation is complex to reason about and doesn't even work.
2024-01-27compositor: don't get buffer from pending buffer resource too earlyKirill Primak
Fixes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3795
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/