Files
MapLibreParticleLab/docs/50_Step记录/STEP-047_Runtime_Timeline与Playback_v3.md
OpenAI Codex 1343929474
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
fix: keep particle timeline playback ticking
2026-09-04 08:17:29 +08:00

1.1 KiB
Raw Permalink Blame History

STEP-047 Playback Tick 根因修复

状态:IMPLEMENTED / WAITING FOR ANDROID RE-VALIDATION

Android Validation Round 2:PARTIAL / NEEDS FIX

PLAY 和 speed JNI command 均返回 SUCCESS;短暂的 TIME_MIX_UPDATE 后 mix 停止,但 State/Trail/Composite 与 RenderThread 持续运行。根因是 RasterArrayTimelineRuntime::tick() 只在 RenderRasterParticleLayer::update() 中调用;该函数只在 render tree/update 生命周期进入,不是每个已构建 drawable frame。

修复

将 Source-owned timeline tick 接入既有 ParticleGpuValidationTweaker::execute() 的 State pass。State drawable 每个正式粒子 simulation frame 执行一次;Trail、Composite 与 world copy 不 tick。因此不需要 Android Timer、每帧 JNI、新线程或循环。Tweaker 将本帧 Core mix 写回现有 resources UBO;现有 layer update 仍负责资源/窗口变更。

新增约每秒一次 PLAYBACK_TICK heartbeat,含 state、speed、cursor、mix、window、fieldUploadCount、simulationResetCount。

Round 3 P1--P4 待用户 Android 验证。未执行 Android Gradle、ADB 或 Jest。