summaryrefslogtreecommitdiffhomepage
path: root/packages/ext-xdg-shell/tests/test_minimize.cpp
AgeCommit message (Collapse)Author
2026-06-15ext-xdg-shell(rml-compositing W2): add Toplevel::wl_surface() (additive)Adam Malczewski
Wave 2, additive — existing wlr_scene compositing of toplevels held intact (the switch to surface elements is a later wave behind a flag). - New contract: Toplevel::wl_surface() -> wlr_surface* (the root surface, == xdg_toplevel->base->surface, the same surface scene_tree() hosts). A borrow with the same lifetime as the Toplevel (valid until on_toplevel_unmapped). This is the surface ext-window-field (Wave 3) passes to the kernel's UiSubstrate::create_surface_element(); the kernel then manages the subsurface/popup tree itself, so no popup/subsurface handles are exposed. ABI-additive: ext-keybindings/ext-stage-dock/host-bin rebuild + link unchanged. - Fixed the ext-xdg-shell-client teardown SIGABRT. Diagnosed (not assumed): the abort is NOT pre-existing on baseline (seed 12e5016 passes) — it is the kernel Wave-1 surface-capture TEST SEAM attaching a commit Listener to every client wl_surface and only detaching at Server teardown, so a client destroying a surface mid-session trips wlroots' wl_list_empty(commit.listener_list) assertion. Fixed in-unit via teardown order (unmap via null-buffer commit; let the Server destructor reap the surface after detaching its seam). Filed a kernel change-request for the real fix (RAII per-surface destroy listener), which will also cure ext-stage-dock-glue. ext-xdg-shell suite 2/2 green in build + build-asan, no SIGABRT, no unbox:: leak/UB. wl_surface() covered (non-null, == root surface, round-trips through scene_tree_for()).
2026-06-13Slice 10 b1: ext-xdg-shell Toplevel minimize mechanismAdam Malczewski
Neutral compositor-side mechanism the stage dock drives to minimize a window (the "minimized" state/policy stays in ext-stage-dock). Adds to Toplevel: geometry() -> wlr_box (size the preview + restore position), scene_tree() -> wlr_scene_tree* (feed UiSubstrate::create_preview + the node hide/show toggles), and hide()/show() — disable/enable the scene node so the client stops compositing and frame callbacks WITHOUT unmapping (no on_toplevel_unmapped, no focus change), idempotent. Verified against wlroots 0.20 that a disabled node quiesces frames. A real in-process wayland client test (test_minimize.cpp) drives it on the headless backend. ext-xdg-shell suite green on build + build-asan. Edits confined to packages/ext-xdg-shell/.