v9.36.1
Highlights
π power-assertion: stop blocking the event loop
The power-assertion CLI handler is async, but held the assertion open with a synchronous time.sleep(timeout) β blocking the command's asyncio event loop for the entire assertion duration and preventing transport/background tasks and cooperative cancellation from running. It now uses await asyncio.sleep(timeout), keeping the loop responsive while the device assertion stays active.
pymobiledevice3 power-assertion power-assertion PreventUserIdleSystemSleep my-assertion 3600π serve-vnc/serve-web: strip the DisplayService NAL trailer
Apple's DisplayService appends a constant 14-byte proprietary footer after each HEVC coded-slice NAL. A plain RFC 7798 reassembly fed that footer to the decoder as trailing slice data. The depacketizer now strips it (exact-suffix match, so it's a no-op on streams that don't carry it), giving downstream decoders a clean bitstream.
π Motion-tear research findings
The serve-web/serve-vnc motion-tear investigation notes were consolidated into a single MOTION_TEAR_FINDINGS.md under pymobiledevice3/remote/core_device/, documenting what was discovered, how, and the conclusions.
What's Changed
- de3c3f8 power_assertion: use asyncio.sleep instead of blocking time.sleep (#1774) (@doronz88)
- a98e05d serve-vnc/serve-web: strip DisplayService NAL trailer; drop tear-research scaffolding (#1771) (@doronz88)
- 1dccbfc research(core-device): VCPDecompressionSession decode path + anti-tear RE roadmap (#1771) (@doronz88)
Full Changelog: v9.36.0...v9.36.1