记
开发日志
← 返回日志

1.12 的「有声无画」:原生窗贴合之坑与 1.12.1 八条热修

NovaPlayer

正式版翻车

1.12.0 出包:安装包 170,634,114 B,比上一版大 34MB——大的正是内置的 libmpv 本体。实验台明明在真机出过画,正式版却在验收里翻了车:

  • 虚拟机验收:三档起播画面全无,但引擎日志自认全对——原生窗建成、首帧 265ms 就到、大文件 532ms、播完正常收尾。只有任务栏上那个原生窗的缩略图是纯白的。
  • 虚拟机的图形路径特殊,这一票不能定罪。用户真机点了一集:同症。有声无画,任务栏还多出一个独立窗口。

定罪:窗口没有「归属」

逐行比对生产装配和实验台出画的那版,差异锁定在一处:实验台的原生窗与主窗口之间有明确的归属(owner)关系,生产版漏了。没有归属,原生窗被主窗口压到最底层,还在任务栏里自立门户——声音从它来,画面被挡在下面。

这也解释了为什么日志全绿:mpv 一直在正常渲染,只是渲染到了一块没人看得见的表面上。「组件都说自己没问题」和「用户看到失败」可以同时成立,中间隔着一层窗口层级。

八条热修攒成 1.12.1

连同验收里攒下的其他问题,一版做完:

  1. 原生窗归属主窗:层级有了锚,任务栏的空白窗消失;
  2. 贴合自检:首帧后五点采样核对原生面的位置与遮挡,不过先自动重贴,再过不了就本会话回退跟随窗——宁可降级,不要再出现「只有声音还不知道为什么」;
  3. 单击暂停 / 双击全屏:原生面改点击穿透,鼠标手势回到应用界面层;
  4. EOF 重播:播完再点播放先回到片头;
  5. 应用图标改走打包资源,修掉自检误报缺失;
  6. 主窗几何守护:起播快照位置、关播恢复、启动自检把跑出屏幕的窗口钳回来(源于用户报的「关播放后主窗左移、左侧切出屏幕」);
  7. 搜索框加宽加距:占位文字不再被裁尾;
  8. 全站过渡定版「组合」:进详情海报放大衔接、进播放缩放淡入、切页交叉淡入——先看小样点定,再落代码。

1.12.1 安装包 170,927,224 B,sha256 6606dd23…fe59。真机复验:画面出来了。

但浮窗感、点不动、关播后窗口跑偏这三件事还在——下一篇,一个诊断包把它们一次定责。