Files
effectcraft/crates/interchange
Dylan M. Taylor f8b9c82446 Interchange: export ends on folder and precomp cycles; import finds each clip's transitions without scanning the track (#2932)
* interchange: end export walks on folder and precomp cycles, and index each clip's transitions on import

Export followed a folder's parent chain recursively before caching it, so a
project whose folders loop back to themselves overflowed the stack. The walk
is now iterative and a repeated folder ends it (the cycle's top becomes a
top-level bin, with a warning).

comp_has_audio recursed into nested comps with no visited set: a precomp
cycle never ended and a chain of comps that each use the next twice took
2^depth steps. It now walks with a stack and a visited set.

Import scanned every transition of a track for every clip on it, quadratic in
a long flat edit. Each track now indexes its transitions by clip once, and
the per-transition warnings are said once per track. Warning de-duplication
uses a set instead of a linear search.

* interchange: reuse a folder's cached bin on export

Exporter::bin returned None when the folder itself was already cached, so
every item after the first in a folder was exported at the project root.
Return the cached bin when the walk starts at a cached folder.
2026-11-11 14:38:11 -05:00
..