0
Fork 0
mirror of https://github.com/Silent1566/webhtv.git synced 2026-10-18 07:09:16 +00:00

fix(tv): 详情未就绪丢弃播放结果时释放加载守卫,消除永久转圈

现象:leanback 播放页偶发加载圈一直转、但不影响播放。

根因:setPlayer(Result) 在守卫持有期间的 6 条退出路径中,!canApplyPlayerResult()
这条早退分支不释放 mPlaybackRequestActive/mPlaybackPlayerStarted。命中后
onStateChanged(STATE_READY) 的 `if (mPlaybackRequestActive && !mPlaybackPlayerStarted) break;`
与 hidePlaybackProgressIfStale() 的同一条件同时被挡下——而这两处是加载圈仅有的清除
路径,于是旧内容继续播放、圈永久留存。与 C42 已修的同族分支同源(commit 3374def641)。

修法:该分支放弃本次结果时一并释放两个守卫,并补注释说明;mobile VideoActivity 没有
这套守卫字段(grep -c = 0),不涉及。范围仅 leanback VideoActivity 与该契约的源级用例。

Verification: :app:compileLeanbackArm64_v8aDebugJavaWithJavac 成功;:app:testMobileArm64_v8aDebugUnitTest 定向跑 VideoActivityLayoutTest 154/154、PlaybackOwnershipSourceTest 16/16 全绿(含本任务新增断言)。同批 ReaderPlaybackRoutingSourceTest 的 2 项失败经取证为既有 CRLF 检出环境问题(reader.html 为 i/lf w/crlf、裸 LF 0 处,断言要求裸 \n),与本改动无因果,已在任务文档记录。

Task-Guard: PLAYBACK-LOADING-GUARD-20261009

Verification: compileLeanbackArm64_v8aDebugJavaWithJavac OK; testMobileArm64_v8aDebugUnitTest: VideoActivityLayoutTest 154/154 pass (incl. new guard-release assertion), PlaybackOwnershipSourceTest 16/16 pass; ReaderPlaybackRoutingSourceTest 2 failures proven pre-existing CRLF checkout artifact (reader.html i/lf w/crlf, bare LF count 0), unrelated to this change

Task-Guard: PLAYBACK-LOADING-GUARD-20261009
This commit is contained in:
Silent1566 2026-10-09 16:38:45 +08:00
commit 4319403502
3 changed files with 81 additions and 0 deletions