Files
LakrandClaude Opus 5.5 cd013c246f Split the camera hooks into compilation units and fix their leaks
libvcamcaptured's nine .inc files and the single libcamfix.m become
separate .m files grouped by subsystem, with private headers for what
crosses a file. Shared symbols are hidden, so neither dylib exports more
than the data plane's vcc_* functions. The Makefile already discovers
them; the data plane test now resolves its header through -I as well.

Fixes found while reading the whole camera path:

- The copyDeviceWithID: and copyStreams hooks return owned objects but
  lacked ns_returns_retained, so ARC autoreleased the result and the
  caller's release over-released it.
- Captured video sinks are held weakly, so a finished session's graph
  is neither kept alive nor fed at 30 Hz forever.
- Viewfinder streams, preview layers and the shm mapping are guarded
  against the threads that touch them; the preview timer is created once.
- Moment captures are stashed per uniqueID and removed on commit or
  cancel, so back-to-back shutter taps keep their own settings and the
  output no longer retains its delegate indefinitely.
- The resolved settings stub assigns ivars with the strong-default
  setter instead of an extra manual retain.
- A photo's JPEG and CGImage come from one frame, and the preview drops
  the last graph sample once no layer shows it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-27 19:08:50 +09:00
..
2026-09-24 20:23:44 +09:00