From 9eb87911a6b9b6158f8a7adf6df77a3a65422695 Mon Sep 17 00:00:00 2001 From: lyswhut Date: Wed, 19 Jun 2024 12:39:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=95=8C=E9=9D=A2=E4=B8=8D?= =?UTF-8?q?=E5=8F=AF=E8=A7=81=E6=97=B6=E7=8A=B6=E6=80=81=E6=A0=8F=E6=AD=8C?= =?UTF-8?q?=E8=AF=8D=E6=B2=A1=E6=9C=89=E6=9B=B4=E6=96=B0=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/utils/lyric-font-player/index.js | 4 ++-- .../utils/lyric-font-player/line-player.js | 10 +++++----- src/renderer/core/lyric.ts | 14 ++++++++++++-- src/renderer/core/useApp/index.ts | 3 +++ src/renderer/core/useApp/useOpenAPI.ts | 6 +++--- src/renderer/core/useApp/useStatusbarLyric.ts | 18 ++++++++++++++++++ 6 files changed, 43 insertions(+), 12 deletions(-) create mode 100644 src/renderer/core/useApp/useStatusbarLyric.ts diff --git a/src/common/utils/lyric-font-player/index.js b/src/common/utils/lyric-font-player/index.js index 4c8ab42e..72fa25fc 100644 --- a/src/common/utils/lyric-font-player/index.js +++ b/src/common/utils/lyric-font-player/index.js @@ -228,7 +228,7 @@ export default class Lyric { } else this.playingLineNum = 0 } - setAutoPause(autoPause) { - this.linePlayer.setAutoPause(autoPause) + setDisabledAutoPause(autoPause) { + this.linePlayer.setDisabledAutoPause(autoPause) } } diff --git a/src/common/utils/lyric-font-player/line-player.js b/src/common/utils/lyric-font-player/line-player.js index a557b2d3..b5fa353a 100644 --- a/src/common/utils/lyric-font-player/line-player.js +++ b/src/common/utils/lyric-font-player/line-player.js @@ -225,15 +225,15 @@ export default class LinePlayer { this._init() } - setAutoPause(autoPause) { - if (autoPause) { - timeoutTools.nextTick = window.requestAnimationFrame.bind(window) - timeoutTools.cancelNextTick = window.cancelAnimationFrame.bind(window) - } else { + setDisabledAutoPause(disabledAutoPause) { + if (disabledAutoPause) { timeoutTools.nextTick = (handler) => { return setTimeout(handler, 20) } timeoutTools.cancelNextTick = clearTimeout.bind(global) + } else { + timeoutTools.nextTick = window.requestAnimationFrame.bind(window) + timeoutTools.cancelNextTick = window.cancelAnimationFrame.bind(window) } } } diff --git a/src/renderer/core/lyric.ts b/src/renderer/core/lyric.ts index dad92a46..bfe8cb75 100644 --- a/src/renderer/core/lyric.ts +++ b/src/renderer/core/lyric.ts @@ -186,8 +186,18 @@ export const setLyric = () => { } } -export const setAutoPause = (autoPause: boolean) => { - lrc.setAutoPause(autoPause) +export const setDisabledAutoPause = (disabledAutoPause: boolean) => { + lrc.setDisabledAutoPause(disabledAutoPause) +} + +let sources = new Map() +let prevDisabled = false +export const setDisableAutoPauseBySource = (disabled: boolean, source: string) => { + sources.set(source, disabled) + const currentDisabled = Array.from(sources.values()).some(e => e) + if (prevDisabled == currentDisabled) return + prevDisabled = currentDisabled + setDisabledAutoPause(currentDisabled) } diff --git a/src/renderer/core/useApp/index.ts b/src/renderer/core/useApp/index.ts index 071e9f4b..79536141 100644 --- a/src/renderer/core/useApp/index.ts +++ b/src/renderer/core/useApp/index.ts @@ -5,6 +5,7 @@ import { appSetting } from '@renderer/store/setting' import useSync from './useSync' import useOpenAPI from './useOpenAPI' +import useStatusbarLyric from './useStatusbarLyric' import useUpdate from './useUpdate' import useDataInit from './useDataInit' import useHandleEnvParams from './useHandleEnvParams' @@ -27,6 +28,7 @@ export default () => { const router = useRouter() const initSyncService = useSync() const initOpenAPI = useOpenAPI() + const initStatusbarLyric = useStatusbarLyric() useEventListener() const initPlayer = usePlayer() const handleEnvParams = useHandleEnvParams() @@ -65,6 +67,7 @@ export default () => { void initDeeplink(envParams) void initSyncService() void initOpenAPI() + void initStatusbarLyric() sendInited() handleListAutoUpdate() diff --git a/src/renderer/core/useApp/useOpenAPI.ts b/src/renderer/core/useApp/useOpenAPI.ts index 12f4c93d..e028f57b 100644 --- a/src/renderer/core/useApp/useOpenAPI.ts +++ b/src/renderer/core/useApp/useOpenAPI.ts @@ -2,7 +2,7 @@ import { watch } from '@common/utils/vueTools' import { appSetting } from '@renderer/store/setting' import { sendOpenAPIAction } from '@renderer/utils/ipc' import { openAPI } from '@renderer/store' -import { setAutoPause } from '@renderer/core/lyric' +import { setDisableAutoPauseBySource } from '@renderer/core/lyric' export default () => { const handleEnable = async(enable: boolean, port: string, bindLan: boolean) => { @@ -21,9 +21,9 @@ export default () => { openAPI.message = error.message }).finally(() => { if (openAPI.address) { - setAutoPause(false) + setDisableAutoPauseBySource(true, 'openAPI') } else { - setAutoPause(true) + setDisableAutoPauseBySource(false, 'openAPI') } }) } diff --git a/src/renderer/core/useApp/useStatusbarLyric.ts b/src/renderer/core/useApp/useStatusbarLyric.ts new file mode 100644 index 00000000..6f83bc46 --- /dev/null +++ b/src/renderer/core/useApp/useStatusbarLyric.ts @@ -0,0 +1,18 @@ +import { watch } from '@common/utils/vueTools' +import { appSetting } from '@renderer/store/setting' +import { setDisableAutoPauseBySource } from '@renderer/core/lyric' + +export default () => { + const handleEnable = (enable: boolean) => { + setDisableAutoPauseBySource(enable, 'statusBarLyric') + } + watch(() => appSetting['player.isShowStatusBarLyric'], enable => { + handleEnable(enable) + }) + + return async() => { + if (appSetting['player.isShowStatusBarLyric']) { + handleEnable(true) + } + } +}