[中] Mac 每次设置变化都重读 motion.json 并重算同步

Aperta
#58 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
22/100
Tipo di issue
Refactoring
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
swift
Ambito
performance

Direzione di ricerca

Read Sources/BirdLockCore/Render/RenderJob.swift around lines 90-113 first to see that init loads motion.json and recomputes composePlan/corrections on every construction, then Sources/BirdLockCore/Render/VideoStabilization.swift:393 for the ~201-offset synchronize scan. Next read the debounced rebuildJob in Sources/BirdLockApp/AppState.swift:509-527 and the export path at :1025 to confirm rebuildWork?.cancel() cannot stop work already started and that the export builds a RenderJob on the MainActor. Done means one in-flight build task with an early cancellation check inside the work item, a cache keyed on analysis.fingerprint plus stabilization settings, and detached export construction, verified by dragging sliders and watching CPU. Static audit only; nothing reproduced on device yet.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

位置:Sources/BirdLockCore/Render/RenderJob.swift:90-113;Sources/BirdLockCore/Render/VideoStabilization.swift:393;Sources/BirdLockApp/AppState.swift:509-527、:1025

现象:RenderJob.init 每次都读取 motion.json、重算 composePlan/corrections(其中 synchronize 会扫描约 201 个偏移)并调用 VideoSource.arrange。rebuildJob 在每次设置变化时以 60 ms 防抖重建,但 rebuildWork?.cancel() 只取消尚未执行的 DispatchWorkItem,已开始的重活无法停止。AppState.export 还会在 MainActor 上同步构造 RenderJob。

复现:打开带陀螺仪的视频工程,快速拖动设置滑块,观察 CPU 与主线程卡顿。

建议:只保留一个在跑的构建任务并在 work 内先检查取消;按 analysis.fingerprint + 稳定化设置 缓存 motion 与同步结果;把导出用的构造移入 Task.detached。

来源:2026-11-15 全仓只读审计,PR #7 未包含此项。 未在实机复现(静态审计)。

Lingua principale
Swift
Stelle
2
Fork
2
Merge medio
1h 11m
PR unite (30g)
2

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di cyandee/BirdLock

Tutte le issue di cyandee/BirdLock

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.