perf: coalesce superseded queued playback seeks
This commit is contained in:
@@ -285,6 +285,17 @@ In normal mode, the right-hand playback control group is captions, then compact
|
||||
|
||||
Accepted relative seeks, including keyboard shortcuts, preserve control visibility instead of revealing hidden chrome. Seek failures still reveal the error; dragging the timeline continues to show the controls.
|
||||
|
||||
Adjacent, not-yet-started seeks keep only the latest absolute target in the native worker queue and Cast socket-write queue. Relative skips still accumulate before submission. Executing/sent seeks are untouched; play/pause, frame steps, media changes and other queued commands remain ordering barriers. Superseded Cast requests release their deadlines and pending-request slots without reporting an error.
|
||||
|
||||
Measured with local, deterministic bursts (not provider/CDN latency):
|
||||
|
||||
| Scenario | Before | After |
|
||||
| --- | --- | --- |
|
||||
| 24 accepted Cast seeks in one actor turn, real TLS loopback receiver | 24 receiver SEEK commands | 2 receiver SEEK commands |
|
||||
| 100,000 native seek submissions with the worker held stopped | 32 accepted; 32 queued; last accepted target 31 | 100,000 accepted; 1 queued; final target 99,999 |
|
||||
|
||||
The Cast burst acknowledged the same final position, 24 seconds, without errors in both runs. `make check-seek-queue` covers native queue capacity, command/timeline barriers and acknowledged-state preservation; Cast protocol and app-model checks cover burst coalescing, play/pause barriers and accumulated relative skips. These measurements establish reduced queued work, not cold-start, cached/uncached seek latency or sustained-playback gains; those benchmarks remain pending.
|
||||
|
||||
Normal and compact titlebars have no full-width glass strip or separator: content extends beneath AppKit’s transparent titlebar using `fullSizeContentView`, `titlebarAppearsTransparent`, and `titlebarSeparatorStyle = .none`. Titles retain their rounded HUD-glass backdrop. In normal mode, pin, Cast, and settings share a separate container matching the title's 24-point height, horizontal padding, vertical inset, tint, outline and corner radius. Cast sits between pin and settings; all three retain 24-point click targets. That button container is not shown in compact mode; only the compact title and adjacent progress occupy the top row with 8-point outer insets. Native traffic lights and window dragging are preserved.
|
||||
|
||||
Compact titles default to `<title> · <position> / <duration> <unit>`, using acknowledged playback position rather than slider previews. Total duration selects the format: below one minute, `12 / 45 s`; from one minute to below one hour, `05:12 / 42:08 m`; from one hour onward, `01:23 / 02:10 h`. Values truncate to the displayed precision. Set `[ui].compact_title_progress = "percentage"` to append only a whole percentage number (`<title> · 59`, without a percent sign), or `"none"` for title-only display. Percentages truncate and stay within 0–100. Loading, failed, live, unknown-duration and closed media have no progress suffix. Normal-mode titles remain unchanged.
|
||||
|
||||
Reference in New Issue
Block a user