Skip to content

AetherEngine 3.11.1

Choose a tag to compare

@superuser404notfound superuser404notfound released this 18 Jun 19:15
· 16 commits to main since this release

Patch release: fixes a system-wide media-decoding wedge after a long background suspension on tvOS.

Fixed

  • System-wide mediaserverd wedge after a long background suspension. A paused native session left running into a multi-hour tvOS suspension kept its AVPlayer decode session, the in-process loopback HLS server sockets, and the upstream AVIO connection all allocated. On resume that wedged the shared mediaserverd system-wide: every app (including unrelated ones) could only paint the first frame until the device was rebooted (reproduced on tvOS 26.5 by pausing a video, sleeping the device for hours, and waking it).

    The didEnterBackground handler now tears the video pipeline down instead of merely pausing. stopInternal unloads the AVPlayer item (replaceCurrentItem(nil)) and invalidates the software VTDecompressionSession synchronously, releasing the shared decode session before suspension. The native host shell and currentAVPlayer are kept so AVKit's system Now-Playing registration survives the seam, and the clock / loaded URL / load options are preserved so the host's foreground reloadAtCurrentPosition() resumes at the paused position. A UIApplication background-task assertion spans the teardown so the synchronous decode-session release and the loopback server's detached socket close complete before the process is suspended.

    Because the foreground path already does a full pipeline rebuild on every full-background return, resume behaviour is unchanged; this only releases the old session earlier instead of freezing it.

Full Changelog: 3.11.0...3.11.1