aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-11-28backend/drm: use DRM_IOCTL_MODE_CLOSEFB instead of RMFBSimon Ser
RMFB implicitly performs a modeset to turn off any CRTC which is using the FB. This prevents seamless transitions between two DRM masters from working. Use the new CLOSEFB IOCTL which doesn't turn off anything and leave it up to the compositor to turn off outputs on shutdown if it wants to.
2023-11-28render/egl: fallback to GBM FD if EGLDevice is not availableSimon Ser
It's possible that we don't have an EGLDevice if we created the EGL context from a GBM device. Let's ensure all GPU-accelerated renderers always have a DRM FD to return by falling back to GBM's FD.
2023-11-28render/vulkan: drop current_command_bufferSimon Ser
This was used by the legacy rendering API. Since begin()/end() only need to set current_render_buffer and nothing else, we can drop all of these bits.
2023-11-27xwm: don't do anything except mapping on MapRequestKirill Primak
Instead, move the wlr_xwayland_surface_set_withdrawn() and wlr_xwayland_surface_restack() calls to the MapNotify handler with an override_redirect check, as they are done too early. This mirrors the logic in the UnmapNotify handler and fixes a bug where wlr_xwayland_surface_restack() would be called on an o-r window after the following sequence of requests: - CreateWindow with override_redirect=True - ChangeWindowAttributes with override_redirect=False - MapWindow Fixes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3770
2023-11-27backend/x11: don't send ConfigureRequest with the same sizeKirill Primak
Under X11, ConfigureNotify means that the window has already been resized. Sending ConfigureRequest with the received size is not only useless, but also can confuse the window manager, which will probably reply with the current (i.e. *old*) size causing a configure loop. Fixes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3769
2023-11-26backend/x11: check buffer format in output_test()Kirill Primak
2023-11-26viewporter: fix src buffer bounds checkSimon Ser
The surface scale and transform are applied before the viewport. Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3766
2023-11-26viewporter: listen to client_commitSimon Ser
The commit event fires too late: we're interested in checking the values at wl_surface.commit time, not after.
2023-11-26viewporter: rename state var in viewport_handle_surface_commit()Simon Ser
"current" is misleading, since we are using the pending state here.
2023-11-25Revert "subcompositor: emit new_subsurface immediately"Kirill Primak
new_subsurface emitted immediately isn't actually that useful. Revert the change and document that this event is special. This reverts commit 504b9491f05d3227d45ea6bcc9c347e1a6bf9586.
2023-11-25matrix: deprecateSimon Ser
Compositors should no longer need matrix operations to render: the old rendering API has been removed, and the new API doesn't take matrices as input.
2023-11-25Cleanup wlr_matrix.h includesSimon Ser
Many files used to require wlr_matrix but no longer do.
2023-11-24compositor: deprecate wlr/types/wlr_region.hKirill Primak
The only function in that header is now also declared in wlr/types/wlr_compositor.h.
2023-11-23output: Drop transform matrixAlexander Orzechowski
2023-11-23output: fix display destroy listener double removalKirill Primak
Fixes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3762
2023-11-23subcompositor: emit new_subsurface immediatelyKirill Primak
See https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3608.
2023-11-23subcompositor: don't map unadded subsurfacesKirill Primak
2023-11-23layer-shell: emit new_surface event at the proper timeKirill Primak
2023-11-23xdg-{shell,decoration}: improve eventsKirill Primak
This commit changes the behavior of `new_*` signals to better match their names (see https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3608). wlr_xdg_shell.events.new_surface is now emitted when an xdg_surface is created, and wlr_xdg_shell.events.new_{toplevel,popup} events are introduced to get notified when an xdg_{toplevel,popup} is created. Same applies to `wlr_xdg_decoration_manager_v1.events.new_toplevel_decoration`. As a result, wlr_xdg_surface.added and wlr_xdg_toplevel_decoration_v1.added are removed, as we no longer need to track whether the corresponding event was emitted. Additionally, this commit changes the behavior of wlr_xdg_surface.events.destroy: it is now emitted when the xdg_surface is destroyed, as the name suggests. wlr_xdg_{toplevel,popup}.events.destroy events are added to get notified when an xdg_{toplevel,popup} is destroyed.
2023-11-23output: take wl_event_loop in wlr_output_init()Simon Ser
We don't need the whole wl_display here anymore. The wl_event_loop is enough.
2023-11-23output: setup display destroy listener in wlr_output_create_global()Simon Ser
The wl_display destroy listener cleans up the global (if any). wlr_output.display will go away, so setup the listener in wlr_output_create_global() instead of wlr_output_init().
2023-11-23output: take wl_display in wlr_output_create_global()Simon Ser
Currently wlr_output holds a wl_display, but it will go away soon. Instead of relying on that field in wlr_output_create_global(), make the dependency explicit by taking a wl_display as argument.
2023-11-23output-layout: take wl_display in constructorSimon Ser
The output layout creates and destroys wl_output globals. We will soon need the wl_display to do so.
2023-11-23backend/session: take wl_event_loop instead of wl_displaySimon Ser
wl_display holds a lot more than wlr_session needs: wlr_session only needs to wait for a FD to become readable, but wl_display provides full access to the Wayland client and protocol objects. Switch to wl_event_loop to better reflect the above.
2023-11-23xwm: ensure stack list only contains mapped managed surfacesnovenary
2023-11-23xwm: avoid restacking managed surfaces above OR surfacesnovenary
This is consistent with other X11 window managers (checked against i3 and mutter).
2023-11-23util/transform: add wlr_output_transform_coords()Simon Ser
We hand-roll this in multiple places.
2023-11-23util/transform: move over wl_output_transform helpersSimon Ser
These aren't really tied to wlr_output.
2023-11-22xdg-toplevel: check that title provided actually is UTF-8Manuel Stoeckl
While the xdg-shell protocol requires this, it does not yet have a dedicated error code for invalid titles; this commit makes wlroots send a generic error instead.
2023-11-22render: drop legacy rendering APISimon Ser
2023-11-22render/vulkan: drop legacy rendering APISimon Ser
2023-11-22render/pixman: drop legacy rendering APISimon Ser
2023-11-22render/gles2: drop legacy rendering APISimon Ser
2023-11-22output/cursor: drop legacy rendering APISimon Ser
2023-11-22render: drop legacy render passSimon Ser
All built-in renderers now implement the new API.
2023-11-21input-inhibitor: dropKirill Primak
wlr_input_inhibitor.h has been marked as deprecated in 0.17.0.
2023-11-21build: bump version to 0.18.0-devSimon Ser
2023-11-21tinywl: fix wlroots dependency constraint in MakefileSimon Ser
2023-11-21build: bump version to 0.17.0Simon Ser
2023-11-21render/vulkan: undo alpha premult for 8-bpc ARGB/ABGRManuel Stoeckl
When a texel from the Vulkan format VK_FORMAT_B8G8R8A8_SRGB is read, the sRGB to linear conversion is applied independently to the R, G, and B channels; the A channel has no influence on this. However, DRM_FORMAT_ARGB8888 buffers are, per Wayland protocol, not encoded in this fashion; one must first unpremultiply the color channels before doing sRGB to linear conversion. This commit switches to handling ARGB8888 and ABGR8888 formats using the general fragment shader conversion from electrical to optical values.
2023-11-20linux-dmabuf-v1: skip import check on split render/display SoCsSimon Ser
Unfortunately we have no way to get back the proper render node in that case. This will be fixed with [1]: with that Mesa patch, the wlr_renderer will return the proper render node and the existing logic will work fine. [1]: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24825 Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3757
2023-11-20screencopy: Use box size instead for shm copyAlexander Orzechowski
This doesn't change functionality, both the values are the same. Less confusing to use the box size.
2023-11-20screencopy: Move frame bounds sanity check into common codeAlexander Orzechowski
2023-11-20screencopy: Define proper destination for dmabuf copyAlexander Orzechowski
Leaving this empty would have it filled in with the size of the source texture, but we want the destination size. Fixes: #3758
2023-11-19backend/drm: drop unnecessary flags in legacy interfaceSimon Ser
drm_crtc_commit() already ensures that atomic-only flags are disallowed.
2023-11-19backend/drm: add wlr_drm_connector_state.nonblockSimon Ser
Instead of having this condition checked in multiple places, centralize it so that they don't go out-of-sync.
2023-11-19backend/drm: fix pending page-flip checkSimon Ser
This chunk of code was moved by mistake. Fixes: 3b53d1cbf199 ("backend/drm: introduce page-flip tracking struct")
2023-11-19xcursor: don't store NULL xcursorsKirill Primak
2023-11-19xcursor: fix NULL deref on malloc() failKirill Primak
2023-11-17backend/drm: Destroy page flips on backend destroyAlexander Orzechowski
When we destroy the backend, page flips will no longer be invoked meaning those won't clean up the page flips for us.