fix(player): 修复切换频道时复用已释放的视频控制器

This commit is contained in:
Zhou Weidong committed 2026-10-21 20:00:15 +08:00
1 parent 45a53180d9
commit f3ec12e3c3
6 files changed
+229 -6

No files matched your search

+28
View File
@@ -175,3 +175,31 @@ Running Gradle task 'assembleDebug'... 26.4s
解读:静态分析零告警,563 项全量测试通过,debug APK 构建成功;
`pubspec.lock` 已还原,无依赖变更,未安装或操作真机。
## 2026-10-21 K98.3 修复频道切换复用已释放视频控制器
- 已从最新 `origin/develop` 创建 `fix/k98.3-disposed-video-controller`。
- `PlaybackSession.active` 与 `preparedPlayerAt` 不再暴露 closed/retiring slot;
`_retire` 先清空活动引用并通知,再等待界面帧边界后暂停和释放播放器。
- `PlayerLogic._replaceSession` 切换 session 后等待 `endOfFrame`,并再次校验
revision 后才关闭旧 session;其它 session 回收路径同样使用该帧边界。
- 已补 retiring player 脱钩单测,以及真实 `PlayerVideoSurface` 经 feed 切换、
连续 pump 后不出现 disposed controller 异常的回归测试。
门禁原始输出:
```text
$ dart analyze lib test
Analyzing lib, test...
No issues found!
$ flutter test --no-pub
00:58 +565: All tests passed!
$ flutter build apk --debug
Running Gradle task 'assembleDebug'... 35.7s
✓ Built build/app/outputs/flutter-apk/app-debug.apk
```
解读:静态分析零告警,565 项全量测试通过,debug APK 构建成功;
`pubspec.lock` 已还原,无依赖变更,未安装或操作真机。