save_beam re-encoded every resident raster keyframe to PNG (+ proxy) on every save, even untouched frames — the dominant per-save cost for painting/animation projects (the code noted this as deferred "Phase 3"). The infrastructure to do it incrementally already exists: kf.dirty means "current pixels not yet in the container" (set on any edit, cleared on a successful save, per main.rs), and it's preserved in the document clone the save worker receives. Gate the encode on it: a clean keyframe already stored keeps its full + proxy rows untouched; only dirty (or not-yet-stored) frames are re-encoded. Media blobs were already incremental; this closes the raster gap. No new data-loss risk: the mid-save-edit race (edit between the document clone and save completion) is pre-existing and identical to the old full-write path. |
||
|---|---|---|
| .. | ||
| beamdsp | ||
| egui_node_graph2 | ||
| gpu-video-encoder | ||
| lightningbeam-core | ||
| lightningbeam-editor | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| GPU_VIDEO_DECODE_PLAN.md | ||
| build-static.sh | ||
| build-windows.bat | ||