Replace the single-owner PCM queues with one shared LGMP SPMC stream.
Give each admitted client reliable state and an independent playback
cursor, while clients without clock authority resample locally.
Extend the audio protocol with per-client epochs and barriers.
Keep capture exclusive and bound authority backpressure so slow
secondary readers cannot affect the disciplined low-latency path.
Give microphone data priority over replaceable clock feedback and
reduce feedback traffic on the shared client-to-host FIFO.
Retry short FIFO stalls outside the realtime thread and coalesce
consecutive packets in the existing fixed Windows buffers.
Avoid one broker write per tiny PipeWire quantum without adding
allocations or intentional capture latency.
Advertise signed and floating-point 32-bit formats across mono,
stereo, quad, surround, 5.1, and 7.1 at every supported rate.
Carry sample encoding through the broker and LGMP protocol so integer
and floating-point streams remain distinct.
Expand packet, shared-memory, and ring capacity for eight-channel
32-bit audio.
Queue playback STOP, START, and DATA for the same wire generation.
Verify that the client creates a fresh local generation and delivers the
first restarted packet.
Treat the binding phase as the authoritative shutdown state after
graceful stream release.
Cover disconnect while the host drains and unbinds both streams.
Scope the legacy latency offset to classic SPICE and use the LGMP
poll bound as its fixed arrival reserve. Keep learned jitter additive.
Select provider clock feedback only when the current remote endpoint
advertises it, avoiding a failed startup attempt on broker v1.
Advertise optional audio mediation separately from runtime driver
availability, then negotiate ownership through the existing LGMP
client-control path.
Define fixed playback and capture stream records for packed PCM,
endpoint state, clock feedback, and targeted descriptor discovery.
Keep the LGMP queue table, recovery sidecar, and submodule unchanged.
Release LGMP stream slots before dispatching clipboard data so an X11
INCR consumer cannot prevent control queue acknowledgements.
Retain one bounded record in client memory while the sink is blocked.
Cancel abandoned X11 transfers after requestor destruction or a finite
progress timeout.
Add LGProtocol as a pinned submodule and consume its KVMFR protocol
definitions throughout the client, host, IDD, OBS, and profiler.
Keep Looking Glass framebuffer helpers local while removing duplicated
protocol headers and migrating users to KVMFR-scoped types.
A stable clock model can request a negative recovery slew while the
unbounded ring is physically underrun. This leaves the reader ahead of
the writer indefinitely and outputs silence until playback is restarted.
Floor active recovery at the physical low-water requirement. Rebase the
device-clock phase by any extra refill so modeled latency remains at the
target without restarting the underrun correction cycle.
Add a deterministic regression for negative physical debt opposing the
stable clock model.
Do not treat the capacity of an allocated PipeWire buffer as the
requested playback period when PipeWire supplies no per-buffer hint.
Use the current stream quantum when available and fall back to the
configured period.
Count one underrun per starvation episode and end the sync diagnostics
epoch when a logical source stops.
Resume a compatible backend synchronously so data after a same-wire
restart is accepted immediately. Rebase the first post-idle device tick
without passing a long gap through the short-step clock filter.
Cancel in-flight backlog trims before fresh audio can be queued.
Recover stable local playback in the device clock domain and restart
rate control from the measured feed-forward clock ratio.
Ignore catch-up packet sizing until the normal source cadence returns.
Do not learn late delivery from packets that already caused an
underrun and media-clock rebase. Preserve learned jitter only across
continuous playback.
Cache native keyboard lock state across input-provider transitions and
reconcile it with HID LED feedback over LGMP.
Project raw and corrective lock-key transitions through the reliable
input FIFO, defer correction until outstanding transitions settle, and
recover from delayed or missing feedback without double toggling.
Retain non-file clipboard representations while asynchronous file MIME
imports are validated. If an offered URI list is invalid or cannot be
read, publish the retained image and text formats instead of clearing
the clipboard.
Classify configured devices by keyboard and pointer capability so
automatic keyboard capture leaves relative pointer devices with the
display server.
Run descriptor, grab, physical-state, and LED operations on one worker.
Marshal normalized events through each display server's event loop and
serialize ownership changes with per-lane barriers.
Fall back whole lanes to native input when an evdev cohort cannot be
owned, and retry missing or removed devices without disabling the rest.
Handle report framing, SYN_DROPPED, high-resolution wheels, queue
overflow, held-state cleanup, and guest-driven keyboard LEDs. Restore
host LEDs and kernel grabs during teardown.
Re-evaluate capture when the active input transport changes.
Allow display servers to dispatch a caller-owned event source on their
native event thread. This lets background input readers marshal events
to the thread that owns application and display-server state.
Poll X11 fairly when native events remain continuously available, and
use bounded polling if the external descriptor cannot be registered.
Report guest HID keyboard LED state from LGInput to LGIdd and
publish it with the LGMP input endpoint status.
Forward SPICE modifier updates through the same provider state so evdev
can synchronize physical keyboard LEDs across transport changes and
reconnects.
Bump the versioned pipe and KVMFR input status contracts for the new
feedback state.
Accept earlier LGMP input status versions without LED feedback so the
client retains input while the guest driver is being upgraded.