fix(player): 雪碧图缓存补齐槽位预取量,清屏按钮贴近进度条
三个渲染槽位各预取 2 张雪碧图,容量 3 装不下会导致「重建→重新下载解码→ notify→重建」的死循环,真机持续发烫掉帧;容量恢复为 8 并只在未命中时预取。 首页清屏态的退出按钮由距底 56 收到 24,贴着进度条上方。
This commit is contained in:
1 parent
79463e65c2
commit
d5bcda54d3
2 files changed
+38
-11
No files matched your search
@@ -159,6 +159,31 @@ void main() {
|
||||
expect(loader.spriteCalls, hasLength(6));
|
||||
});
|
||||
|
||||
testWidgets('should_not_reload_three_slots_sprites_when_capacity_fits', (
|
||||
tester,
|
||||
) async {
|
||||
final loader = _FakeSpriteLoader(vtt: _spriteVtt);
|
||||
// 播放页三个槽位各预取 2 张,容量必须 >= 6,否则每轮重建都会重新下载解码。
|
||||
final service = SpriteThumbnailAxisService(
|
||||
loader: loader,
|
||||
spriteCacheCapacity: 8,
|
||||
);
|
||||
addTearDown(service.dispose);
|
||||
const urls = [
|
||||
'https://cdn.test/episode-0/thumbnails.vtt',
|
||||
'https://cdn.test/episode-1/thumbnails.vtt',
|
||||
'https://cdn.test/episode-2/thumbnails.vtt',
|
||||
];
|
||||
|
||||
for (var round = 0; round < 3; round++) {
|
||||
for (final url in urls) {
|
||||
await service.prepareAt(url, Duration.zero);
|
||||
}
|
||||
}
|
||||
|
||||
expect(loader.spriteCalls, hasLength(6));
|
||||
});
|
||||
|
||||
testWidgets('should_refresh_vtt_after_ten_minute_ttl', (tester) async {
|
||||
var now = DateTime(2026, 10, 22);
|
||||
final loader = _FakeSpriteLoader(vtt: _spriteVtt);
|
||||
|
||||
Reference in new issue
Block a user