compose-desktop-video-no-swingpanel
Installation
SKILL.md
Compose Desktop video without an embedded panel
Most native media engines expose a software render path: you hand it a pixel buffer and a size,
it decodes, scales and letterboxes a frame into that buffer, and you copy it out. The obvious way to
show the result in Compose Desktop is to blit it onto an AWT/Swing component and embed that. Do not.
Publish finished frames as immutable images on a StateFlow and draw them with a plain Image; the
engine side is identical and the whole embedding bug class disappears.
Why the embedded-panel route fails
Three separate failures, all structural rather than fixable:
- A heavyweight embedded component is an overlay: it draws above every Compose node regardless of z-order, so nothing can be placed on top of the video.
- It repositions one frame late while the page scrolls — visible as a flicker that exposes whatever is behind the window, and worse on a transparent window.
- The toolkit gives a component exactly one parent: two screens composing the player fight over the single instance, and the loser renders black until next/previous — the "video randomly missing" report.