labwc/src
Consolatis 870a8e8b55 toplevel-capture: work around stalls for captured windows in the main scene
In wlroots 0.20.0 there is an issue where a capture scene removes outputs
from a wlr_surface which belong to another scene. This in turn causes
`wlr_scene_output_send_frame_done()` to fail for our main scene after
a toplevel has been captured once, for example via grim -T.

To work around the issue we look for views with a capture session, iterate
over all its wlr_scene_buffers and if they have the primary output set
(e.g. they are not completely covered / hidden) we send the frame event
manually. As wlroots turns multiple frame events without a new callback
registered by the client into no-ops this also doesn't result in duplicated
frame events seen by the client.

Note that the other way around also causes an issue which this workaround
does not fix. When capturing a toplevel and then changing its visibility
state on screen and then covering it up completely / hiding it the capture
will stall instead.
2026-04-06 19:57:33 +02:00
..
common tree-wide: use die_if_null() for wlr_scene alloc failures 2026-03-15 21:26:37 +00:00
config make wlroots DRM backend optional 2026-03-31 22:58:49 +02:00
cycle osd-thumbnail: handle buffer allocation failure 2026-04-02 22:10:30 +02:00
decorations decorations: fix accidental rename 2026-03-22 10:13:17 +01:00
foreign-toplevel toplevel-capture: partial initial implementation 2026-04-04 17:41:57 +02:00
img Don't remove newlines when parsing config, menu and XBM 2025-10-17 22:08:41 +09:00
input make wlroots libinput backend optional 2026-03-31 22:58:49 +02:00
menu tree-wide: use rc.theme instead of server.theme 2026-03-22 10:16:42 +01:00
scaled-buffer tree-wide: wrap a few extra-long lines 2026-03-21 21:35:33 +00:00
ssd tree-wide: use rc.theme instead of server.theme 2026-03-22 10:16:42 +01:00
action.c use X macros to fill up enum action_type and const char *action_names[] 2026-03-24 19:35:38 +00:00
buffer.c src: include primary header first 2025-07-29 21:51:56 +01:00
debug.c tree-wide: rename g_server to just server 2026-03-21 21:35:33 +00:00
desktop-entry.c tree-wide: rename g_server to just server 2026-03-21 21:35:33 +00:00
desktop.c tree-wide: rename seat->seat to seat->wlr_seat for clarity 2026-03-22 00:56:49 +01:00
dnd.c tree-wide: rename seat->seat to seat->wlr_seat for clarity 2026-03-22 00:56:49 +01:00
edges.c tree-wide: rename g_server to just server 2026-03-21 21:35:33 +00:00
idle.c tree-wide: rename seat->seat to seat->wlr_seat for clarity 2026-03-22 00:56:49 +01:00
interactive.c tree-wide: rename g_server to just server 2026-03-21 21:35:33 +00:00
layers.c tree-wide: rename seat->seat to seat->wlr_seat for clarity 2026-03-22 00:56:49 +01:00
magnifier.c tree-wide: use rc.theme instead of server.theme 2026-03-22 10:16:42 +01:00
main.c [move-to-master] common/macros: change WLR_VERSION macro to runtime evaluation 2026-04-04 17:37:22 +02:00
meson.build Drop cosmic-workspace and use wlroots implementation of ext-workspace-v1 2026-03-30 10:29:04 +02:00
node.c Use "cycle" instead of "osd" across the codebase 2025-11-30 16:20:16 +09:00
output-state.c include: split output.h from labwc.h 2025-07-30 21:04:31 +01:00
output-virtual.c tree-wide: rename g_server to just server 2026-03-21 21:35:33 +00:00
output.c toplevel-capture: work around stalls for captured windows in the main scene 2026-04-06 19:57:33 +02:00
overlay.c tree-wide: rename g_server to just server 2026-03-21 21:35:33 +00:00
placement.c tree-wide: rename g_server to just server 2026-03-21 21:35:33 +00:00
regions.c tree-wide: rename g_server to just server 2026-03-21 21:35:33 +00:00
resistance.c tree-wide: rename g_server to just server 2026-03-21 21:35:33 +00:00
resize-outlines.c tree-wide: use rc.theme instead of server.theme 2026-03-22 10:16:42 +01:00
seat.c make wlroots libinput backend optional 2026-03-31 22:58:49 +02:00
server.c toplevel-capture: work around wlroots memory leak 2026-04-06 19:57:33 +02:00
session-lock.c tree-wide: rename g_server to just server 2026-03-21 21:35:33 +00:00
snap-constraints.c src: remove unused #includes (via include-what-you-use) 2025-09-07 19:34:30 +09:00
snap.c common: add node-type.c/h (renaming ssd_part_type to lab_node_type) 2025-09-06 16:00:20 -04:00
tearing.c tree-wide: rename g_server to just server 2026-03-21 21:35:33 +00:00
theme.c tree-wide: rename g_server to just server 2026-03-21 21:35:33 +00:00
view-impl-common.c tree-wide: rename g_server to just server 2026-03-21 21:35:33 +00:00
view.c toplevel-capture: partial initial implementation 2026-04-04 17:41:57 +02:00
window-rules.c tree-wide: rename g_server to just server 2026-03-21 21:35:33 +00:00
workspaces.c Drop cosmic-workspace and use wlroots implementation of ext-workspace-v1 2026-03-30 10:29:04 +02:00
xdg-popup.c toplevel-capture: partial initial implementation 2026-04-04 17:41:57 +02:00
xdg.c toplevel-capture: partial initial implementation 2026-04-04 17:41:57 +02:00
xwayland-unmanaged.c tree-wide: rename seat->seat to seat->wlr_seat for clarity 2026-03-22 00:56:49 +01:00
xwayland.c toplevel-capture: partial initial implementation 2026-04-04 17:41:57 +02:00