mirror of
https://github.com/Silent1566/webhtv.git
synced 2026-10-18 07:09:16 +00:00
fix(detail): 作废内联取址请求时释放其加载标记,消除永久加载圈
现象:详情页内播(沉浸融合/详情直放)偶发加载圈一直转但不影响播放;同一集还会表现为无法再次起播。 根因:playInline() 先置 inlinePlaybackPending=true 再自增代际,而回调里 `inlinePlaybackPending = false;` 写在 isInlinePlaybackRequestCurrent(...) 检查**之后**。 于是凡是「只自增代际、不接替请求」的作废点,回调直接 return,标记再无释放路径: ① updateInlineLoading() 的可见条件首项即该标记 ⇒ 圈永久留在屏上; ② isSamePendingInlinePlayback() 恒真 ⇒ selectInlineEpisode 早退,同一集无法再次起播。 实测该类作废点两处:refreshAndSwitchInlinePlayer()(选其它内核,8993 调用)与 cancelPendingInlinePlayerSwitch()(选当前已生效内核 8998 / 打开外部播放器 9295)。 其余自增点(resetDetailState / cancelPendingInlinePlayback / closeDetailFullscreenPlayer) 均已释放,属置位点的 playInline 本身正常。 修法:两处作废点在自增代际后、投递新请求前同步释放标记并刷新面板。必须在作废点同步 释放而非仅在回调里释放:任务若在运行前被取消,submit 的 lambda 根本不执行,回调式释放 永不触发。切内核自身的缓冲显示由 updateInlineLoading 的引擎条件兜住,不依赖该标记。 Verification: :app:compileMobileArm64_v8aDebugJavaWithJavac 成功;:app:testMobileArm64_v8aDebugUnitTest 定向 TmdbDetailDirectPlayTransitionSourceTest 4/4(含新增断言);同批显式列出 77 个 Tmdb/Inline/PlaybackOwnership 用例类共 610 项,1 项失败经字节取证为既有 CRLF 检出环境问题(断言要求裸 \n,而 leanback VideoActivity.java 为 i/lf w/crlf、裸 LF 0 处;且该断言读的文件本次未改动),与本改动无因果。新断言对修复前源码必然变红(逐方法体字符串校验)。 Task-Guard: INLINE-LOADING-RELEASE-20261009 Verification: compileMobileArm64_v8aDebugJavaWithJavac OK; TmdbDetailDirectPlayTransitionSourceTest 4/4 pass (incl. new cancellingAnInlinePlaybackRequestReleasesItsLoadingFlag); wider 610-test Tmdb/Inline/PlaybackOwnership sweep: 609 pass, 1 failure (TmdbSourceOnlyInteractionTest line 42) proven pre-existing CRLF checkout artifact (bare LF sequence absent, CRLF variant present, file unmodified by this change); new assertion provably red before the fix Task-Guard: INLINE-LOADING-RELEASE-20261009
This commit is contained in:
parent
4319403502
commit
7809ff4952
3 changed files with 131 additions and 0 deletions
Loading…
Add table
Add a link
Reference in a new issue