summaryrefslogtreecommitdiff
path: root/wlr_scene.c
AgeCommit message (Collapse)Author
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.
2022-05-19wlr_scene_output: Send output leave events before destroying the outputAlexander Orzechowski
2022-05-19wlr_scene: Add setter for buffer of a wlr_scene_bufferAlexander Orzechowski
2022-05-19wlr_scene: Allow buffer in wlr_scene_buffer to be NULLAlexander Orzechowski
This is useful to emulate an unmapped surface.
2022-04-28Zero-initialize structs in init functionsSimon Ser
Ensures there is no field left to its previous undefined value after calling an init function.
2022-03-16Revert "scene: try to import buffers as textures before rendering"Simon Ser
This reverts commit 3db1bcbe641b407b9f5c9e5d0a012b45aa2c6cb7. Since [1], importing buffers as textures before wlr_renderer_begin isn't necessary anymore. [1]: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3464
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-13surface: deprecate wlr_surface.hKirill Primak
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-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-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-13scene: add wlr_scene_send_frame_done()Isaac Freund
2021-12-13scene: add primary output to wlr_scene_surfaceIsaac Freund
This allows compositors to avoid sending multiple frame done events to a surface that is rendered on multiple outputs at once. This may also be used in the same way for presentation feedback.
2021-12-13scene: send surface enter/leave output eventsIsaac Freund
Co-authored-by: Simon Ser <[email protected]>
2021-12-04Fix wlr_scene_node_lower_to_bottomtiosgz
Before this commit, it would keep the node at the top or make it second- topmost.
2021-11-30scene: add wlr_scene_get_scene_outputSimon Ser
This allows getting a wlr_scene_output from a wlr_output. Since an output can only be added once to a scene-graph there's no ambiguity. This is useful for compositors using wlr_scene_attach_output_layout: the output layout integration automatically creates a scene-graph output for each wlr_output added to the layout.
2021-11-26scene: add support for viewporterSimon Ser
If the surface has a source box set, use that. Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3172
2021-11-18types/wlr_scene: use renderer from wlr_outputSimon Zeni
2021-11-07scene: fix calloc size mismatchSimon Ser
2021-10-23scene: add support for direct scan-outSimon Ser
Check if only a single node intersects with the output viewport and all of its properties match. In this case, attempt direct scan-out.
2021-10-22scene: add wlr_scene_output_for_each_surfaceSimon Ser
This allows compositors to more easily implement sending wl_surface.frame callback done events.
2021-10-18scene: remove surface commit listener when node is destroyedSimon Ser
2021-10-14scene: add functions to place node on top/bottomIsaac Freund
These are very common operations for compositors (including tinywl) to perform.
2021-10-14scene: assert that node != sibling in place above/belowIsaac Freund
Currently these functions remove the node from the scene if the sibling argument is the same node as the node. To prevent confusion when misusing this API, assert that the nodes are distinct and document this.
2021-09-22scene: add wlr_scene_buffer_set_transformSimon Ser
2021-09-22scene: add wlr_scene_buffer_set_dest_sizeSimon Ser
2021-09-22scene: use scene_node_get_size in wlr_scene_node_atSimon Ser
This allows to unify the RECT and BUFFER code-paths. The BUFFER one will become more complicated with destination size and transforms.
2021-09-22scene: add scene_node_get_size helperSimon Ser
2021-09-22scene: add wlr_scene_buffer_set_source_boxSimon Ser
2021-09-22scene: add wlr_scene_bufferSimon Ser
This new scene-graph node displays a wlr_buffer. Closes: https://github.com/swaywm/wlroots/issues/3161
2021-09-22scene: unify intersection logic in wlr_scene_node_atSimon Ser
Let's extract the common bits.
2021-09-22scene: drop default case in wlr_scene_node_atSimon Ser
This allows the compiler to error out if we haven't enumerated all of the cases. This is useful to avoid a missing implementation when adding a new node type.
2021-09-21scene: add wlr_scene_treeSimon Ser
2021-09-09scene: move source to subdirSimon Ser
This will allow more scene-graph extensions to be added without cluttering wlr_scene.c, for instance for sub-surface handling and wlr_output_layout integration.