luft/render/lobby.lisp
A radio-only attachment must not make the renderer open an otherwise empty overlay pass. The worker remains alive independently of paint.
GPU ownership ends first while viewer's device is still live. Network
shutdown is independent and bounded, and still runs if frame release
reports a problem.
START only spawns the worker; broker discovery, connect, subscribe, and reads all remain on that worker.
Start viewer's shared radio once at a frame boundary, without its panel.
Open the detailed panel at a frame boundary over the already-live radio.
Hide the detailed panel at a frame boundary, preserving its radio client.
Toggle the detailed panel atomically at viewer's next frame boundary.
An explicitly owned AVFrame.
(instrument)Return INSTRUMENT's input and visual stacking priority.
(instrument viewer)Whether INSTRUMENT currently participates in VIEWER.
Logical negation of one test or raw truth value.
(instrument viewer)Publish INSTRUMENT's already-owned state at VIEWER's frame boundary.
(frame)(instrument viewer pass surface-texture physical-extent)Encode INSTRUMENT into VIEWER's final PASS at PHYSICAL-EXTENT.
Replay COMPOSITOR's textureless McCLIM mirror into PASS under affine STATE. DESTINATION-TEXTURE describes the open pass for format and clipping. FRAME-TEXTURE names the bounded in-flight presentation slot whose host-visible buffers are safe to update; normally both arguments are the same texture.
(frame viewport-logical-extent &key (margin +lobby-hud-margin+))Place FRAME in the lower-left using destination logical coordinates. The affine state is expressed against the logical viewport. A high-density drawable therefore supplies its native samples directly to analytic edges and Slug glyphs; no panel-sized texture is enlarged.
(viewer)(instrument viewer)Release INSTRUMENT while VIEWER's GPU device is live.
(frame)(client &key (timeout 3/4))Request cooperative stop and wait at most TIMEOUT seconds. No transport operation occurs on the caller. Repeated stops are idempotent.
(viewer)(viewer)(viewer)Logical disjunction of tests and raw truth values.
(client)(&key (name (default-lobby-participant-name))
(client-id-prefix "luv")
(transport (make-instance 'mqtt-lobby-transport)))(viewer instrument)Attach INSTRUMENT at VIEWER's frame boundary in explicit priority order. ADD consumes a newly offered INSTRUMENT on both success and terminal rejection. Once VIEWER begins stopping, the rejected instrument is released exactly once before APPLICATION-ATTACHMENT-CLOSED is signalled.
Logical conjunction of tests and raw truth values.
(viewer instrument)Detach and release INSTRUMENT at a frame boundary. Return true when it was attached. Release is synchronous with the caller and therefore cannot overlap a native frame which still borrows the instrument.
(viewer)(client canvas context device
&key (title "lobby") (install-compositor-p t))(viewer)(viewer)(canvas function)Run FUNCTION with a timestamp on CANVAS's native frame/event thread. The initial native implementation is synchronous: the caller waits for the function's values. The protocol leaves room for a real frame scheduler.
(viewer)(viewer)(viewer)(name (&rest lambda-list) documentation &body body)
luftcontributes only application placement and lifecycle. The radio and retained HUD remain shared components, while the central viewer-instrument dispatcher owns frame, input, and release ordering.