Skip to content

5.8.8

Choose a tag to compare

@superuser404notfound superuser404notfound released this 19 Jul 06:44

Bug-fix release: exiting a long live DVR channel no longer freezes the UI.

Fixed

  • Exiting a long live DVR channel no longer freezes the UI for several seconds. PacketRingBuffer.close() collected every spooled packet file and deleted them one at a time on the calling thread. A live software-host stream held open for minutes spools tens of thousands of packet files, so the O(n) filesystem walk stalled the caller for 5-30 s and, when close() ran on the main actor, blocked switching between channels / exiting the stream.

    close() is now idempotent (the in-RAM index is cleared synchronously under the lock, so the ring is immediately unusable) and dispatches the scratch-directory removal to a background queue, so filesystem I/O never blocks the caller. Every spooled file lives under the per-instance dvr-<UUID> scratch dir, so a single recursive removal covers them all and a second teardown from a racing thread is a harmless no-op. VOD playback is unaffected (no DVR ring). Reported and fixed by Nathan Piper (nathanpiper), device-verified on Apple TV 4K (3rd gen), tvOS 26.5.

Consumers on 5.8.7 should bump.