From eab3fc9b7faab2f088daefe2827e56f4ada7b70f Mon Sep 17 00:00:00 2001 From: mtvpls Date: Sat, 20 Dec 2025 21:12:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=B6=85=E5=88=86=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E6=97=B6=E9=87=8D=E5=A4=8D=E6=B8=B2=E6=9F=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG | 3 ++- VERSION.txt | 2 +- src/app/play/page.tsx | 19 +++++++++++-------- src/lib/changelog.ts | 5 +++-- src/lib/version.ts | 2 +- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index c992117..ac18ec3 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,7 +1,8 @@ -## [203.2.1] - 2025-12-20 +## [203.2.2] - 2025-12-20 ### Fixed - 修复IOS端换集报错播放器初始化失败 +- 修复超分切换时重复渲染 ## [203.2.0] - 2025-12-19 diff --git a/VERSION.txt b/VERSION.txt index ce98b76..617b5b5 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1 +1 @@ -203.2.1 \ No newline at end of file +203.2.2 \ No newline at end of file diff --git a/src/app/play/page.tsx b/src/app/play/page.tsx index f4f58b6..049a8a3 100644 --- a/src/app/play/page.tsx +++ b/src/app/play/page.tsx @@ -1059,9 +1059,9 @@ function PlayPageClient() { }; // 清理播放器资源的统一函数 - const cleanupPlayer = () => { + const cleanupPlayer = async () => { // 先清理Anime4K,避免GPU纹理错误 - cleanupAnime4K(); + await cleanupAnime4K(); if (artPlayerRef.current) { try { @@ -1122,8 +1122,10 @@ function PlayPageClient() { try { if (anime4kRef.current) { - anime4kRef.current.stop?.(); + anime4kRef.current.controller?.stop?.(); anime4kRef.current = null; + // 等待旧实例完全停止,避免双重渲染 + await new Promise(resolve => setTimeout(resolve, 100)); } const video = artPlayerRef.current.video as HTMLVideoElement; @@ -2925,20 +2927,21 @@ function PlayPageClient() { } // WebKit浏览器或首次创建:销毁之前的播放器实例并创建新的 - if (artPlayerRef.current) { - cleanupPlayer(); - } - // 异步初始化播放器 const initPlayer = async () => { try { + // 先清理旧播放器实例 + if (artPlayerRef.current) { + await cleanupPlayer(); + } + // iOS需要等待DOM完全清理 await new Promise(resolve => setTimeout(resolve, 100)); // 双重检查:如果旧播放器仍然存在,再次清理 if (artPlayerRef.current) { console.warn('旧播放器仍存在,再次清理'); - cleanupPlayer(); + await cleanupPlayer(); await new Promise(resolve => setTimeout(resolve, 100)); } diff --git a/src/lib/changelog.ts b/src/lib/changelog.ts index b4e03b8..e1ea012 100644 --- a/src/lib/changelog.ts +++ b/src/lib/changelog.ts @@ -11,14 +11,15 @@ export interface ChangelogEntry { export const changelog: ChangelogEntry[] = [ { - version: '203.2.1', + version: '203.2.2', date: '2025-12-20', added: [ ], changed: [ ], fixed: [ - "修复IOS端换集报错播放器初始化失败" + "修复IOS端换集报错播放器初始化失败", + "修复超分切换时重复渲染" ] },{ version: '203.2.0', diff --git a/src/lib/version.ts b/src/lib/version.ts index 5f22295..607ddb9 100644 --- a/src/lib/version.ts +++ b/src/lib/version.ts @@ -1,6 +1,6 @@ /* eslint-disable no-console */ -const CURRENT_VERSION = '203.2.1'; +const CURRENT_VERSION = '203.2.2'; // 导出当前版本号供其他地方使用 export { CURRENT_VERSION };