summaryrefslogtreecommitdiffhomepage
path: root/packages/kernel/src/server_impl.hpp
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-06-13 17:09:24 +0900
committerAdam Malczewski <[email protected]>2026-06-13 17:09:24 +0900
commit64c21337e7ccd3e158462771cd2e2886554256f0 (patch)
tree244d950d3adfcdbd2871f813154e1635a31bd177 /packages/kernel/src/server_impl.hpp
parent2b99158e5f1be1a51c9e6bf351e058efa98e63c4 (diff)
downloadunbox-64c21337e7ccd3e158462771cd2e2886554256f0.tar.gz
unbox-64c21337e7ccd3e158462771cd2e2886554256f0.zip
Slice 10 a1: preview pipeline spike — wlr pixels -> RMLUi texture (Fork-B GO)
The keystone for the stage dock. Proves Fork B on the real target (Mesa crocus, HD 4400): a toplevel's pixels, rendered by the wlr GLES2 renderer into a LINEAR ARGB8888 dmabuf, import as an EGLImage -> sampled GL texture in the sibling RMLUi GLES 3.2 context (the slice-3 bridge run in reverse) and composite into an <img src="unbox-preview://N"> inside a ui surface — upright, color-correct. Public surface (ui.hpp): class Preview (source_uri/source_width/source_height/ refresh) + UiSubstrate::create_preview(wlr_scene_tree*) -> unique_ptr<Preview> (nullptr if no GL path; never throws). Kernel-suite probes: ui_preview_import_is_dmabuf, ui_pixel(x,y). Clean four-resource teardown (URI reg, GL texture, EGLImage, dmabuf); refresh-after-source-destruction is UB (consumer drops Preview on unmap). kernel 42 cases/150 assertions green on build + build-asan (asan clean, no new suppressions). Edits confined to packages/kernel/.
Diffstat (limited to 'packages/kernel/src/server_impl.hpp')
-rw-r--r--packages/kernel/src/server_impl.hpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/packages/kernel/src/server_impl.hpp b/packages/kernel/src/server_impl.hpp
index ef4a479..bcdb693 100644
--- a/packages/kernel/src/server_impl.hpp
+++ b/packages/kernel/src/server_impl.hpp
@@ -184,6 +184,7 @@ public:
PerExtensionUi(Server::Impl* server, ExtensionId id) : server_(server), id_(id) {}
auto create_surface(const UiSurfaceSpec& spec) -> std::unique_ptr<UiSurface> override;
+ auto create_preview(wlr_scene_tree* source) -> std::unique_ptr<Preview> override;
auto available() const -> bool override;
auto touch_mode() const -> bool override;
void set_touch_mode_override(TouchModeOverride ov) override;