Files
ArtPlayer/refactor/changes/2026-09-13-PKG-DANMUKU-11-visible-lifetime.md
T

3.1 KiB
Raw Blame History

PKG-DANMUKU-11 Worker 等待与可见寿命

07稳定性审查发现独立计时问题,拆为本任务修复;07本身仍未完成。 配置speed为1秒,Worker回复之前的隐藏等待如果超过1秒,弹幕刚触发visible就会 在下一调度帧被回收。开始时间原先在postMessage前设置,而CSS显示在回复后才开始。

兼容范围

修复仅把成功放置的可见起点与实际放置时间对齐。保留原speed、Worker几何输入、 同步/异步门面、事件参数/顺序、状态池、取消与错误行为;不改变公开类型或包入口。 空轨道/取消不新增visible;暂停后的剩余寿命、播放速度与旧seek/reset行为仍回归。 这是原来隐藏等待吞掉可见时长的缺陷修正,等待较长的弹幕会获得完整显示时间。 历史readys的±0.1秒窗口和beforeVisible串行语义不在此任务改变。

验证

受控红测使用真实Worker算法:mode0/1/2、1秒寿命、等待3秒。三个开始时间断言 均得到1000而非4000,明确复现本问题;修复后的绿测继续验证250ms剩余寿命和一次 回收断言。原始日志保留在refactor/.cache/danmuku11-unit-red.log。

原生测试使用实际视频与真实Worker几何,仅通过观察用Worker子类给请求传递加 1500ms延迟,记录post/reply/visible/recycle时间。它验证人为注入延迟后的行为, 不声称真实用户环境必然发生相同Worker延迟。

完整源码253项通过,正式main/legacy各57项调度与Worker测试通过(包括共同的 内部WorkerClient测试,不能都算独立产物案例)。构建、目标lint和分包严格TS通过。 源码浏览器90项:原调度66项加寿命24项,覆盖两核心、新旧插件、mode0/1及三引擎; main/legacy各选12项候选寿命用例,总114项通过,无重试或跳过。以visible事件到 节点回收测得生命周期,不把它称为逐帧视觉/自然Worker饥饿或长期吞吐验收。 相同1秒配置下,旧版测得0–15ms,修复源码998–1044ms,main1004–1041ms、 legacy1005–1027ms;原生逐帧调度有少量回收延后,受控用例精确验证时间扣减。 具体环境、字节及时间见机器证据。

首次浏览器运行也触发了旧版已登记的play/playing双循环,历史两次请求与单次计时 夹具冲突。将插件安装放在原生playing之后并显式启动一次来隔离该已知缺陷,未改变 被测时钟/队列或寿命阈值。隔离红测4个旧版缺陷观察通过、4个候选寿命断言失败, 再修复生产。第一次失败也留档,没有把夹具故障当成本任务独立红测。 独立只读复查确认取消/节点检查在时钟更新之前,几何与剩余寿命仍按准备时速度 计算,setState→place→visible顺序不变;包ARCHITECTURE同步维护计时边界。 无新依赖、公开类型、版本或分发入口变更;构建产物和docs复制保持相同字节。

状态以tasks.json为准。回退本任务独立commit 会恢复旧计时问题,不撤销06类型迁移或10热力图修复。未推送、未发布。