aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-02-02ext-session-lock-v1: new protocol implementationIsaac Freund
This implements the new ext-session-lock-v1 protocol [1]. [1]: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/131
2022-02-01scene: Add layer_shell_v1 helperKenny Levinsen
This helper behaves similar to the xdg_shell helper, and additionally provides a little assistance for positioning and exclusive_zone management.
2022-02-01scene: try to import buffers as textures before renderingSimon Ser
The wlroots APIs currently don't allow importing/uploading a buffer during rendering operations. Scene-graph buffer nodes need to turn their wlr_buffer into a wlr_texture at some point. It's not always possible to do so at wlr_scene_buffer creation time because the scene-graph may have zero outputs at this point, thus no way to grab a wlr_renderer. Instead, add scene-graph buffers to a pending list and try to import them in wlr_scene_output_commit. References: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3354
2022-01-31cursor: ensure mapping box is always initializedKirill Primak
Commit 498f30aad100ca616640c7bcbf11ab8ef7d48c45 changed the logic of get_mapping() in types/wlr_cursor.c to use updated version of wlr_output_layout_get_box(). However, the case where c_device isn't NULL but doesn't have output or geometry mappings wasn't handled properly, resulting in leaving the output value uninitialized. This commit fixes `c_device != NULL` branch by returning from the function only when a mapping is found. Fixes https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3369
2022-01-31xcursor: garbage collect XcursorLibraryLoadImagesVlad Zahorodnii
XcursorLibraryLoadImages is unused, let's drop it. Same as [1]. [1]: https://gitlab.freedesktop.org/wayland/wayland/-/merge_requests/206 Co-authored-by: Simon Ser <contact@emersion.fr>
2022-01-31cursor: store mapped_box as valueKirill Primak
2022-01-31output-layout: remove useless types/fieldsKirill Primak
2022-01-31output-layout: make wlr_output_layout_get_box() take a box as parameterKirill Primak
Closes https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/812
2022-01-28xdg-output: remove dead codeIsaac Freund
wlroots current requires wayland-protocols 1.24, so this if is no longer needed and hasn't been for a while.
2022-01-25subsurface: unlock cached state on commit if desyncedKirill Primak
wl_subsurface::set_desync description states: "If cached state exists when wl_surface.commit is called in desynchronized mode, the pending state is added to the cached state, and applied as a whole." This commit reintroduces an implementation of said behavior, previously removed in 7daf6da9ac05be2cb74c0983e3caee0b21db75d4. Strictly speaking, this logic isn't fully correct, as the cached state and the pending state are applied individually instead, if the cached state isn't locked by anything else. However, the end result is still the same. This commit fixes the issue with Firefox permission popups.
2022-01-22compositor: damage the whole buffer on viewport src changeKirill Primak
wp_viewporter protocol doesn't seem to say anything about damage, but Firefox assumes that wp_viewport::set_source alone is enough to damage the whole surface, and that assumption kinda makes sense, so let's do that.
2022-01-20subcompositor: destroy subsurface with parentSimon Ser
When the parent surface is destroyed, also destroy the child wl_subsurface. No need to handle the wlr_subsurface.parent == NULL case anymore. Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/1709
2022-01-20subcompositor: document subsurface_from_resourceSimon Ser
2022-01-20editorconfig: set max_line_lengthSimon Ser
See [1]. CONTRIBUTING.md says: > Try to keep your lines under 80 columns, but you can go up to 100 if it > improves readability. [1]: https://github.com/editorconfig/editorconfig/wiki/EditorConfig-Properties#max_line_length
2022-01-19render/vulkan: log physical device driver nameSimon Ser
This can be useful to figure out why a required feature is missing, e.g. as in [1]. We check VK_EXT_physical_device_drm availability after printing the driver name. [1]: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3358
2022-01-19scene_graph: Simplify computation for offset of new surfaces.Alexander Orzechowski
This became possible after the usage of wlr_surface_send_frame_done.
2022-01-19scene_graph: remove unused outputs listAlexander Orzechowski
2022-01-19scene_graph: use wlr_scene_output_send_frame_doneAlexander Orzechowski
2022-01-17foreign-toplevel: send enter if needed on output bindIsaac Freund
Currently the output enter event is never sent if the client has not yet bound the output, which happens every time the compositor creates a new output. To fix this, listen for the output bind event and inform clients as if needed.
2022-01-16input_method_v2: improve mapping detectionTadeo Kondrak
Detect NULL commits before the surface is actually committed, allowing the surface to be properly damaged on unmap.
2022-01-14tinywl: fix check whether client is focused or notIsaac Freund
Currently this check is too strict and denies the move/resize request if a subsurface of the client has pointer focus.
2022-01-13surface: improve role precommit hookKirill Primak
Now the role precommit hook is called before the commit, not on wl_surface.commit request, and takes a state which is to be applied.
2022-01-13surface: deprecate wlr_surface.hKirill Primak
2022-01-13surface: move decl to wlr_{sub,}compositor.hKirill Primak
2022-01-13surface: move impl to types/wlr_{sub,}compositor.cKirill Primak
2022-01-13surface: introduce events.client_commitKirill Primak
wlr_surface.events.client_commit is fired when wl_surface.commit request is received.
2022-01-13subcompositor: split out from compositorKirill Primak
2022-01-09readme: drop mention of the Sway projectSimon Ser
wlroots has historically been started as a Sway project, but these days many wlroots contributors are working on other compositors. wlroots now also has its own namespace on gitlab.freedesktop.org. Let's remove the mention about Sway in the README, to make it clearer that Sway isn't treated in a special manner when it comes to wlroots development.
2022-01-08scene/subsurface_tree: fix handling subsurface destructionKirill Primak
This commit renames map/unmap listeners to clarify that they handle subsurface events, and ensures the node is always destroyed before the subsurface. Without this patch, wl_list_remove() would operate on listener links in already freed memory. glibc is usually lenient to bugs like this, but musl isn't.
2022-01-05render/gles2: don't constrain shm formats to ones that support readingThomas Hebb
commit 44e8451cd93e ("render/gles2: hide shm formats without GL support") added the is_gles2_pixel_format_supported() function to render/gles2/pixel_format.c, whose stated purpose is to "check whether the renderer has the needed GL extensions to read a given pixel format." It then used that function to filter the pixel formats returned by get_gles2_shm_formats(). The result of this change is that RGB formats are no longer reported for GL drivers that don't implement EXT_read_format_bgra, even when those formats are supported for rendering (which they have to be for wlr_gles2_renderer_create() to succeed). This is a pretty clear regression, since wlr_renderer_init_wl_shm() fails when either of WL_SHM_FORMAT_ARGB8888 or WL_SHM_FORMAT_XRGB8888 are missing. To fix the regression, change is_gles2_pixel_format_supported() to accept all pixel formats that support rendering, regardless of whether we can read them or not, and move the check for EXT_read_format_bgra back into gles2_read_pixels(). (There's already a check for this extension in gles2_preferred_read_format(), so we're not breaking any abstraction that wasn't already broken.) Tested on the NVIDIA 495.46 proprietary driver, which doesn't support EXT_read_format_bgra. Fixes: 44e8451cd93e ("render/gles2: hide shm formats without GL support")
2021-12-26vulkan: Fix imported image layoutnyorain
2021-12-23scene: schedule an output frame on wl_surface.frameSimon Ser
Some clients (e.g. mpv, Firefox) request a new wl_surface.frame callback without damaging their surface. When this happens, schedule a new output frame. Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3350
2021-12-20wlr_texture: remove wlr_texture_from_wl_drm() from headerIsaac Freund
This function was already removed in e5b5592a but it was forgotten to remove it from the header.
2021-12-20backend: error out in autocreate without libinput supportSimon Ser
The libinput backend is now optional. However, this means that a user building wlroots without the correct libinput dependencies will end up with a compositor which doesn't respond to input events. wlr_backend_autocreate is supposed to return a sensible setup, so in this case let's just error out and explain what happened. Users can suppress the check by setting WLR_LIBINPUT_NO_DEVICES=1 (already used to suppress the zero input device case inside the libinput backend). Compositors which really want to create a bare DRM backend can easily create it manually instead of using wlr_backend_autocreate.
2021-12-19build: simplify Meson subproject fallbacksSimon Ser
All of these projects use meson.override_dependency() so we can stop referencing their internal variable name to grab the depndencies we need.
2021-12-17Remove wlr_box.h redirectionSimon Ser
Compositors should've all been updated to use the new header by now.
2021-12-17build: bump soversionSimon Ser
According to [1] this should be done at each release with breaking ABI changes. [1]: https://gitlab.freedesktop.org/wlroots/wlroots/-/wikis/Core-contributor-guide#releasing-a-new-version Fixes: 7360810f2e5c ("build: bump to version 0.16.0")
2021-12-17layer-shell: fix type of marginsIsaac Freund
These currently use uint32_t while they are an int32_t in the protocol.
2021-12-17build: bump to version 0.16.0Simon Ser
2021-12-15backend/wayland: add basic linux-dmabuf feedback supportSimon Ser
This patch makes it so we bind to zwp_linux_dmabuf_v1 version 4 and we use it to grab the main device. v4 sends supported formats via a table so we need to handle this as well. v4 allows wlroots to remove the requirement for Mesa's internal wl_drm interface.
2021-12-15layer-shell: don't set committed flag if the property didn't changeStacy Harper
This fixes configure loop in Sway when clients re-send same properties on every configure event. Original issue: https://todo.sr.ht/~mil/sxmo-tickets/413
2021-12-14scene: add wlr_scene_set_presentation()Isaac Freund
This helper automates sending presentation feedback to clients based on the primary output of scene surfaces.
2021-12-14build: add subproject fallback for libdrmSimon Ser
2021-12-14backend/drm: use drmCloseBufferHandleSimon Ser
This has been added in [1] and allows us to close buffer handles without manually calling drmIoctl. [1]: https://gitlab.freedesktop.org/mesa/drm/-/merge_requests/192
2021-12-14backend/drm: use drmModeFormatModifierBlobIterNextSimon Ser
This avoids open-coding our own logic. The resulting code is more readable. References: https://gitlab.freedesktop.org/mesa/drm/-/merge_requests/146
2021-12-14util/global: remove wl_display arg from wlr_global_destroy_safeSimon Ser
Since [1], we can get the wl_display directly from the wl_global. [1]: https://gitlab.freedesktop.org/wayland/wayland/-/commit/2b22160fb690a76247aa9bd0be3069ff43e8239f
2021-12-14xdg-activation: Allow to submit tokensGuido Günther
Allows the compositor to submit tokens to the pool of currently active tokens. This can be useful when the launcher doesn't use or support xdg-activation-v1 by itself - e.g. when it is X11 based or use gtk_shell1.
2021-12-14seat: Only resend keyboard/pointer enter to focused clientsDavid Rosca
Otherwise it will send enter events to clients that already have keyboard/pointer focus. Notably Qt applications warns about this.
2021-12-13scene: fix wlr_scene_send_frame_done() APIIsaac Freund
This doesn't work if scene outputs are not used as the primary output of scene surfaces will always be NULL. Therefore, take a wlr_scene_output instead of separate wlr_scene and wlr_output arguments and rename the function to wlr_scene_output_send_frame_done(). The actual behavior of the function is unchanged.
2021-12-13tinywl: use wlr_scene_send_frame_done()Isaac Freund