Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions docs/host-lvgl.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,9 @@ scope):
own display driver, which an embedded target does anyway.
- Dialogs are resizable; overlay changes (combo drop, popup menu, toast) still invalidate the whole
frame.
- DAW embedding (`NEUI_API_EMBED`): the seams are present so the host links and the API round-trips,
but LVGL owns the whole display - there is no foreign native parent, so `set_parent` is recorded
and ignored, `event_fd` is -1, and `pump_and_tick` is a no-op.

**Known cost to be aware of on 565 targets**: LVGL's software vector path renders ThorVG only into
ARGB8888/XRGB8888, so on RGB565 every vector task round-trips through a temporary full-framebuffer
Expand Down
16 changes: 13 additions & 3 deletions hosts/crossplatform/platform_lvgl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1437,9 +1437,19 @@ namespace xpl_host
g_retired_windows.push_back(w);
}

void platform_set_embed_parent(Session*, uint32_t, unsigned long) {}
int platform_embed_event_fd(void*) { return -1; }
void platform_embed_pump_and_tick(void*) {}
// DAW-embedding seams - LVGL owns the whole display, so there is no foreign
// native parent to embed into. The setter still records the value (as the
// null host does) so the public NEUI_API_EMBED state round-trips; nothing
// ever acts on it, and platform_create_plugwindow ignores wd.embed_parent.
void platform_set_embed_parent(Session* session, uint32_t widget_index,
void* native_parent)
{
if (!session) return;
auto* wd = session->get_widget(widget_index);
if (wd) wd->embed_parent = reinterpret_cast<uintptr_t>(native_parent);
}
int platform_embed_event_fd(void* /*native_handle*/) { return -1; }
void platform_embed_pump_and_tick(void* /*native_handle*/) {}

void platform_destroy_window(WidgetData& wd)
{
Expand Down