Fix synchronized lyrics that may become unaligned during playback after re-rendering
This commit is contained in:
parent
3edc6bab04
commit
e106fb324f
1 changed files with 10 additions and 6 deletions
|
@ -4,6 +4,7 @@ import {
|
||||||
useCurrentTime,
|
useCurrentTime,
|
||||||
useLyricsSettings,
|
useLyricsSettings,
|
||||||
usePlaybackType,
|
usePlaybackType,
|
||||||
|
usePlayerData,
|
||||||
useSeeked,
|
useSeeked,
|
||||||
} from '/@/renderer/store';
|
} from '/@/renderer/store';
|
||||||
import { PlaybackType, PlayerStatus } from '/@/renderer/types';
|
import { PlaybackType, PlayerStatus } from '/@/renderer/types';
|
||||||
|
@ -61,6 +62,7 @@ export const SynchronizedLyrics = ({
|
||||||
const playersRef = PlayersRef;
|
const playersRef = PlayersRef;
|
||||||
const status = useCurrentStatus();
|
const status = useCurrentStatus();
|
||||||
const playbackType = usePlaybackType();
|
const playbackType = usePlaybackType();
|
||||||
|
const playerData = usePlayerData();
|
||||||
const now = useCurrentTime();
|
const now = useCurrentTime();
|
||||||
const settings = useLyricsSettings();
|
const settings = useLyricsSettings();
|
||||||
const centerControls = useCenterControls({ playersRef });
|
const centerControls = useCenterControls({ playersRef });
|
||||||
|
@ -109,16 +111,18 @@ export const SynchronizedLyrics = ({
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const player = (
|
const player =
|
||||||
playersRef.current.player1 ?? playersRef.current.player2
|
playerData.current.player === 1
|
||||||
).getInternalPlayer();
|
? playersRef.current.player1
|
||||||
|
: playersRef.current.player2;
|
||||||
|
const underlying = player?.getInternalPlayer();
|
||||||
|
|
||||||
// If it is null, this probably means we added a new song while the lyrics tab is open
|
// If it is null, this probably means we added a new song while the lyrics tab is open
|
||||||
// and the queue was previously empty
|
// and the queue was previously empty
|
||||||
if (!player) return 0;
|
if (!underlying) return 0;
|
||||||
|
|
||||||
return player.currentTime;
|
return underlying.currentTime;
|
||||||
}, [playbackType, playersRef]);
|
}, [playbackType, playersRef, playerData]);
|
||||||
|
|
||||||
const setCurrentLyric = useCallback(
|
const setCurrentLyric = useCallback(
|
||||||
(timeInMs: number, epoch?: number, targetIndex?: number) => {
|
(timeInMs: number, epoch?: number, targetIndex?: number) => {
|
||||||
|
|
Reference in a new issue