aboutsummaryrefslogtreecommitdiff
path: root/include/wlr
AgeCommit message (Collapse)Author
2023-11-30renderer: Drop buffer bindingAlexander Orzechowski
2023-11-30render: Nuke old read pixels APIAlexander Orzechowski
Sadly, the new API is not backwards compatible with the old API. Since we have already switched all users in wlroots to the new API compositors are already practically mandated to implement the new API. Let's get rid of the old one since there is no point.
2023-11-30wlr_texture: Introduce wlr_texture_preferred_read_formatAlexander Orzechowski
2023-11-30wlr_texture: Introduce wlr_texture_read_pixels_options helpersAlexander Orzechowski
2023-11-30wlr_texture: Introduce wlr_texture_read_pixelsAlexander Orzechowski
2023-11-30output: replace wlr_render_timer arg with wlr_buffer_pass_optionsSimon Ser
This scales better when more render pass options are added.
2023-11-30render/gles2: save/restore context when creating/submitting a render passSimon Ser
This is useful for e.g. lazily blitting a texture for readback purposes while rendering.
2023-11-30render/gles2: document EGL context gotchasSimon Ser
2023-11-30output: drop stale references to wlr_output_attach_render()Simon Ser
It turns out we forgot about the function declaration in the header. Also some docs were still referring to that function. Move the wlr_output_attach_render() docs to wlr_output_begin_render_pass().
2023-11-29render: Drop rendering_with_bufferAlexander Orzechowski
This is always true now that we can only render with a buffer.
2023-11-29output: Drop back_bufferAlexander Orzechowski
2023-11-29output: Drop wlr_output_attach_renderAlexander Orzechowski
2023-11-29renderer: Drop wlr_renderer_beginAlexander Orzechowski
2023-11-29damage_ring: add wlr_damage_ring_rotate_buffer()Simon Ser
This adds an alternate way to use wlr_damage_ring without the concept of buffer age. Buffer age is a concept inherited from EGL but there is no real reason why we should continue to use that in wlroots. Instead, use wlr_buffer pointers. Eventually, we should be able to remove the buffer age based functions.
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-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-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: 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-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-22render: drop legacy rendering APISimon Ser
2023-11-21input-inhibitor: dropKirill Primak
wlr_input_inhibitor.h has been marked as deprecated in 0.17.0.
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-14Add missing type declarations in headersKirill Primak
2023-11-14wlr_scene: Introduce wlr_scene_subsurface_tree_set_clipAlexander Orzechowski
2023-11-14wlr_scene_surface: Introduce scene_surface_set_clipAlexander Orzechowski
2023-11-14wlr_scene: Amend scene_buffer.point_accepts_input to take coordinate pointersAlexander Orzechowski
The pointers mean that we can mutate them. This will be useful later so we can hide details from the compositor when we clip subsurface trees.
2023-11-13xdg-shell: add wlr_xdg_{toplevel,popup}_try_from_wlr_surface()Simon Ser
Convenience helpers for compositors. Saves them the trouble of manually checking the role (and if they forget to do so, prevents an invalid cast).
2023-10-30backend: drop wlr_backend_get_presentation_clock()Simon Ser
We can just assume CLOCK_MONOTONIC everywhere. Simplifies the backend API, and fixes clock mismatches when multiple backends are used together with different clocks.
2023-10-26xwayland: add wlr_xwayland_set_workareas()John Lindgren
This function allows compositors to set the _NET_WORKAREA property on the root window. XWayland clients use _NET_WORKAREA to determine how much of the screen is not covered by panels/docks. The property is used for example by Qt to determine areas of the screen that popup menus should not overlap (see QScreen::availableVirtualGeometry).
2023-10-26xdg-shell: use wlr_surface.unmap_commitKirill Primak
2023-10-26layer-shell: track surface init stateKirill Primak
2023-10-26compositor: add wlr_surface.unmap_commitKirill Primak
This flag can be used to figure out whether a particular commit has unmapped the surface. Private state for now in case we find a better way to track this.
2023-10-19linux_dmabuf_v1: convert to try_fromeri
References: wlroots/wlroots#884
2023-10-19drm: convert to try_fromeri
References: wlroots/wlroots#884
2023-10-19buffer: convert to try_fromeri
References: wlroots/wlroots#884
2023-10-14xwayland: stop translating _NET_WM_STRUT_PARTIAL coordinatesJohn Lindgren
Translating the right/bottom coordinates from offsets to absolute coordinates in wlroots (rather than in the compositor) was supposed to be more reliable, since wlroots had access to the X11 screen size. It ended up being less reliable, because the screen size values (xwm->screen->width_in_pixels/height_in_pixels) are not updated when the output layout changes. So let's remove the translation from wlroots, and let the compositor figure it out. From what I can understand of the current XWayland code, the X11 screen size should generally match the overall wlr_output_layout bounding box, which the compositor has access to.
2023-10-10xwayland: add wlr_xwayland_create_with_server()Simon Ser
Allows compositors to set up the server (and shell) on their own.
2023-10-10xwayland/server: add ready flagSimon Ser
Allows one to check whether the server is currently ready.
2023-10-10security-context-v1: add commit eventSimon Ser
2023-10-10security-context-v1: new protocol implementationSimon Ser
Co-authored-by: Puck Meerburg <puck@puckipedia.com> References: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/68
2023-10-09xdg-shell: fix wlr_xdg_popup_destroy() docsKirill Primak
2023-10-09output: allow_artifacts -> allow_reconfigurationKenny Levinsen
The name "allow_artifacts" and associated description is very vague, and theoretically allow for tearing behavior. Clarify that we only intend to mean artifacts related to output configuration (e.g., modesets). References: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3740
2023-10-07scene_output_layout: Don't destroy output when output layout is destroyedAlexander Orzechowski
There were a couple of problems with this: 1. The behavior is unexpected. Typically objects in wlroots won't also destroy objects that they depend on. For instance, wlr_scene_output will not destroy the wlr_output when it's destroyed. It shouldn't be any different for scene layouts. 2. This fixes a crash where because wlr_output_layout and wlr_scene_output are both addons to wlr_output, we might get into a situation where wl_list_for_each_safe might malfunction. See [1] This means that the compositor needs to manually destroy the output when they destroy the layout, hence ~breaking. Compositors can just call `wlr_scene_output_destroy()` if they want to destroy both at the same time. [1] https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4358#note_2106260 This reverts commit 1a731596c5bcd252d8796cacb59af8b20ceb914f. Co-authored-by: Kirill Primak <vyivel@eclair.cafe>