mirror of
https://github.com/Silent1566/webhtv.git
synced 2026-10-08 19:44:46 +00:00
修复自动下一集黑屏:Surface 未绑定到重建后的引擎
自动下一集换集时 PlayerManager.clear() 先把 spec 置空,preparePlayer() 随后重建
引擎并回调 onPlayerRebuild();此时 isOwner() 为 false,setRender() 整段被跳过,
render 值不变。attachSurface() 原来只按“PlayerView.getPlayer() 是否为空”判断,
而 View 上仍挂着上一集已 release() 的旧引擎(非空),于是新引擎从未拿到 Surface:
解码器能初始化、能到 READY、音频正常,但零视频帧 —— 表现为有声音、全黑无画面,
必须手动切换播放核心或软硬解才恢复(两者都会重新走 onPlayerRebuild → setRender
→ detach+attach,顺带完成缺失的重绑)。
改为按引擎实例身份判断并强制重绑:同引擎跳过(未重建时的正常换集行为完全不变),
不同引擎先 setPlayer(null) 再 setPlayer(next)。
用户设备修复前日志确证:换集边界 render=0/target=0 使重绑分支被跳过、无
"attach after setPlayer"、READY 后长时间无 first-frame;随后一次偶然的引擎重建
重新绑定后立刻出现首帧。该偶然重建来自已被 56ebd07f1 整体删除的音频指纹去广告
rebuildAudioPipeline(),这正是缺陷在近期才频繁出现的原因。
Verification: PlaybackOwnershipSourceTest 16/16 通过(新增 kernelRebuildBindsTheNewEngineToThePlayerViewByInstanceIdentity);revert 生产改动后该用例 FAILED,证明确实锁定本次修复;双 flavor Java 编译 BUILD SUCCESSFUL;scripts/build_arm64_debug_install.sh --flavor mobile --serial 192.168.50.3:5555 构建成功并 install -r 覆盖安装(未卸载),启动与界面渲染正常、logcat 无 FATAL EXCEPTION
Task-Guard: autonext-black-screen
Verification: PlaybackOwnershipSourceTest 16/16 passed (new kernelRebuildBindsTheNewEngineToThePlayerViewByInstanceIdentity); falsified by stashing the production change => that test FAILED; compileMobileArm64_v8aDebugJavaWithJavac + compileLeanbackArm64_v8aDebugJavaWithJavac BUILD SUCCESSFUL; build_arm64_debug_install.sh --flavor mobile --serial 192.168.50.3:5555 built and install -r succeeded, app booted/rendered with zero FATAL EXCEPTION
Task-Guard: autonext-black-screen
This commit is contained in:
parent
24265785a3
commit
5096941a40
3 changed files with 204 additions and 2 deletions
Loading…
Add table
Add a link
Reference in a new issue