From df80ef748e9d407de58e3756b06fb6c4ebb17e94 Mon Sep 17 00:00:00 2001 From: meowarex Date: Thu, 19 Feb 2026 23:53:48 +1100 Subject: [PATCH] Fix Race Condition --- plugins/radiant-lyrics-luna/src/index.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/plugins/radiant-lyrics-luna/src/index.ts b/plugins/radiant-lyrics-luna/src/index.ts index efbebd3..3f1a4d7 100644 --- a/plugins/radiant-lyrics-luna/src/index.ts +++ b/plugins/radiant-lyrics-luna/src/index.ts @@ -1298,6 +1298,7 @@ interface WordLyricsResponse { } // syllable state +let trackChangeToken = 0; let lyricsData: WordLine[] | null = null; let tickLoopId: number | null = null; let isActive = false; @@ -1696,6 +1697,7 @@ const clearTickLoop = (): void => { // teardown (cleanup) const teardown = (): void => { + trackChangeToken++; clearTickLoop(); unwatchRerender(); unhookUserScroll(); @@ -1990,7 +1992,10 @@ const onTrackChange = async (): Promise => { if (settings.lyricsStyle === 0) return; + const token = ++trackChangeToken; + const trackInfo = await getTrackInfo(); + if (token !== trackChangeToken) return; if (!trackInfo) { trace.log("Word lyrics: could not get track info from playback state"); return; @@ -2004,6 +2009,7 @@ const onTrackChange = async (): Promise => { trackInfo.title, trackInfo.artist, ); + if (token !== trackChangeToken) return; if (!response) { trace.log("Word lyrics: no word-level lyrics for this track"); return;