summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-08-14wlr_scene: Rewrite direct scan out logic to rely on visibilityAlexander Orzechowski
Also make the regular rendering logic use the introduced render list.
2022-08-14wlr_scene: Don't render non visible parts of textures/rectsAlexander Orzechowski
We can also get rid of the intersection checks in the rendering functions because we are guaranteed to already be in the node do to the prior intersection checking of the node visibility.
2022-08-14wlr_scene: Only send frame done events for visible buffersAlexander Orzechowski
2022-08-14wlr_scene_set_buffer_with_damage: Only damage the visible parts of the nodeAlexander Orzechowski
2022-08-14wlr_scene: Rework damage handlingAlexander Orzechowski
Simplify damage handling by using our cached visibility state. Damaging can happen in one step because since we can use the old visibility state which represent what portions of the screen the scene node was. This way we can damage everything in one step after the fact.
2022-08-14wlr_scene: Add per scene node visibilityAlexander Orzechowski
2022-08-14wlr_scene: Damage scene on node destroy by disabling nodeAlexander Orzechowski
This removes one trivial call of scene_node_damage_whole. It's easier to disable the node later than it is to do the damage dance later.
2022-08-14wlr_scene: Introduce scene_nodes_in_boxAlexander Orzechowski
Will query the scene for all nodes that appear in the given wlr_box. The nodes will be sent to the iterator from closest to farthest from the eye. Refactor wlr_scene_node_at to use this new function.
2022-08-08wlr_scene: Add option to disable direct scanoutAlexander Orzechowski
Closes: #3405 Supersedes: !3562 Co-authored-by: Xiao YaoBing <[email protected]>
2022-08-06scene/layer_shell: Ignore unmapped exclusion zoneKenny Levinsen
Only the exclusion zone for mapped layer shell surfaces should be respected. In particular, a layer shell surface that was mapped with an exclusion zone but is now unmapped should not adjust the usable area. Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3471
2022-07-03wlr_scene: Maintain damage highlight regions per outputAlexander Orzechowski
The logic doesn't support handling multiple outputs so let's not break the assumption and handle damages per output much like how damage_ring is done.
2022-07-03wlr_scene: Use direct assignment for damage indicator timestampsAlexander Orzechowski
2022-06-29scene: add missing output damage listenerKirill Primak
This is necessary to handle damage coming from the backend and software cursors.
2022-06-29scene: switch to wlr_damage_ringKirill Primak
2022-06-28tinywl: exit on backend, renderer or allocator creation failureSimon Zeni
2022-06-21wlr_input_device: remove anon union fieldIsaac Freund
This union is unnecessary since the recent input device refactor and can now be replaced by wlr_*_from_input_device() functions.
2022-06-08scene/layer_shell_v1.c: fix bug in width/height calculationsJohan Malm
...in wlr_scene_layer_surface_v1_configure() Reproduce bug with waybar by setting `"margin": 5,` in ~/.config/waybar/config. It will result in the right edge of the panel extending outside the edge of the output. The bug can also be reproduced with gtk-layer-demo by anchoring left/right/top/bottom and setting respective margins Relates-to: https://github.com/labwc/labwc/issues/382
2022-06-07scene/output_layout: Fix crash in scene_output_layout_output_destroyConsolatis
Closes: #3448
2022-06-02wlr_scene_buffer: Update primary_output on output destroyAlexander Orzechowski
2022-06-02wlr_scene_buffer: Call output enter/leave after primary_output calculationAlexander Orzechowski
2022-06-01scene/output-layout: add initial outputsKirill Primak
2022-06-01scene/output-layout: improve ownership logicKirill Primak
This commit ensures that outputs that weren't created by the output layout helper aren't destroyed on the output layout change. Consider the following piece of logic: // struct wlr_output *o1, *o2; // struct wlr_scene *scene; // struct wlr_output_layout *layout; wlr_scene_attach_output_layout(scene, layout); wlr_output_layout_add_auto(layout, o1); struct wlr_scene_output *so2 = wlr_scene_output_create(scene, o2); wlr_output_layout_move(layout, o1, 100, 200); // so2 is invalid now
2022-06-01scene: add wlr_scene_output.events.destroyKirill Primak
2022-05-31wlr_scene: Only allow parenting on a wlr_scene_treeAlexander Orzechowski
2022-05-31wlr_scene: Move children list from wlr_scene_node to wlr_scene_treeAlexander Orzechowski
2022-05-31wlr_scene: Refactor wlr_scene (the root element) to encase a wlr_scene_treeAlexander Orzechowski
Co-authored-by: Isaac Freund <[email protected]>
2022-05-31wlr_scene: Inline wlr_scene_node_stateAlexander Orzechowski
This seems like nothing interesting was done with this. Let's simplify and allow us some flexibility in the future.
2022-05-31wlr_scene: Only allow parenting on a wlr_scene_treeAlexander Orzechowski
2022-05-31wlr_scene: Refactor wlr_scene (the root element) to encase a wlr_scene_treeAlexander Orzechowski
Co-authored-by: Isaac Freund <[email protected]>
2022-05-30wlr_scene: Fix scaling with default source_boxConsolatis
Default to texture instead of destination_box geometry.
2022-05-27tinywl: use xdg-shell v3Kirill Primak
2022-05-27xdg-popup: use current/pending state patternKirill Primak
2022-05-23wlr_scene: Hook up HIGHLIGHT logicAlexander Orzechowski
This will display red translucent rectangles on the screen regions that have been damaged. These rectangles will fade out over the span of 250 msecs. If the area is damaged again while the region is fading out, the timer is reset. Let's also disable direct scan out when this option is enabled, or else we won't be able to render the highlight damage regions.
2022-05-23wlr_scene: Hook up RERENDER logicAlexander Orzechowski
2022-05-23wlr_scene: Parse out WLR_SCENE_DEBUG_DAMAGEAlexander Orzechowski
2022-05-23scene/output: check for NULL in destructorKirill Primak
2022-05-19wlr_scene: Refactor wlr_scene_surface to be a helper on top of wlr_scene_bufferAlexander Orzechowski
2022-05-19wlr_scene: Refactor wlr_scene_surface to be a helper on top of wlr_scene_bufferAlexander Orzechowski
2022-05-19wlr_scene: Introduce addons to scene nodesAlexander Orzechowski
2022-05-19wlr_scene: Change out surface specific iterator functionsAlexander Orzechowski
Instead iterate over wlr_scene_buffer
2022-05-19wlr_scene: Pull scene_node_get_root into a private headerAlexander Orzechowski
We will need this for surface emulation on buffers.
2022-05-19wlr_scene: Make scene_buffer_from_node publicAlexander Orzechowski
2022-05-19wlr_scene: Add a function to also specify damage when applying a buffer to ↵Alexander Orzechowski
wlr_scene_buffer
2022-05-19wlr_scene: Add a way to choose when input interactions happen on a bufferAlexander Orzechowski
2022-05-19wlr_scene: Add frame_done signal for wlr_scene_bufferAlexander Orzechowski
Let's also change the name of the function. Motivation [1]. [1] https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3496#note_1357824
2022-05-19wlr_scene: Add primary_output property to wlr_scene_bufferAlexander Orzechowski
2022-05-19 wlr_scene: Add presentation signal for wlr_scene_bufferAlexander Orzechowski
2022-05-19wlr_scene: Make wlr_scene_render_output privateAlexander Orzechowski
This function sidesteps damage tracking and output awareness on buffers/surfaces. This function isn't a great fit for the API. Let's also inline the function and simplify it.
2022-05-19wlr_scene: Fix missing calls to scene_node_update_outputsAlexander Orzechowski
There were a couple places this was missing - on mode change of an output. If the resolution changes for example nodes may fall out of the view. - on commits on an output for scale or transform changes - when the transform of a buffer is changed. If the dest size is not set, the buffer may have been rotated potentially changing its size if the buffer width != height
2022-05-19wlr_scene: Add output_enter/output_leave signalsAlexander Orzechowski
When we destroy a scene buffer, let's make sure that we call output_leave signals before we finish the node which will call destroy listeners.