From 5a71afed147b1f7ce0289e6984f86f8089de9e00 Mon Sep 17 00:00:00 2001 From: Barinade Date: Sun, 19 Feb 2023 14:34:54 -0600 Subject: [PATCH] properly time the clean up of the audio visualizer this should allow visualizer to persist as long as it is needed --- Themes/Rebirth/Scripts/10 AudioVisualizer.lua | 14 +++++++++----- Themes/_fallback/Scripts/10 AudioVisualizer.lua | 14 +++++++++----- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/Themes/Rebirth/Scripts/10 AudioVisualizer.lua b/Themes/Rebirth/Scripts/10 AudioVisualizer.lua index 5263de359c..1d787e16b4 100644 --- a/Themes/Rebirth/Scripts/10 AudioVisualizer.lua +++ b/Themes/Rebirth/Scripts/10 AudioVisualizer.lua @@ -199,11 +199,6 @@ function audioVisualizer:new(params) local screen local values = frame.values frame.playbackFunction = function(fft, ss) - -- cleanup - if screen ~= SCREENMAN:GetTopScreen() then - SOUND:ClearPlayBackCallback() - return - end local samplingRate = ss:GetSampleRate() local count = #fft @@ -245,6 +240,15 @@ function audioVisualizer:new(params) screen = SCREENMAN:GetTopScreen() SOUND:SetPlayBackCallback(frame.playbackFunction, frame.sampleCount) end + frame.EndCommand = function(self) + -- triggers if the screen the visualizer is loaded on gets deleted (a transition or exit) + SOUND:ClearPlayBackCallback() + end + frame.ResetVisualizerMessageCommand = function(self) + screen = SCREENMAN:GetTopScreen() + SOUND:SetPlayBackCallback(frame.playbackFunction, frame.sampleCount) + end + frame[#frame + 1] = frame.sound return frame end diff --git a/Themes/_fallback/Scripts/10 AudioVisualizer.lua b/Themes/_fallback/Scripts/10 AudioVisualizer.lua index 1295f2bcaf..5ab66d1f50 100644 --- a/Themes/_fallback/Scripts/10 AudioVisualizer.lua +++ b/Themes/_fallback/Scripts/10 AudioVisualizer.lua @@ -177,11 +177,6 @@ function audioVisualizer:new(params) local screen local values = frame.values frame.playbackFunction = function(fft, ss) - -- cleanup - if screen ~= SCREENMAN:GetTopScreen() then - SOUND:ClearPlayBackCallback() - return - end local samplingRate = ss:GetSampleRate() local count = #fft @@ -222,6 +217,15 @@ function audioVisualizer:new(params) screen = SCREENMAN:GetTopScreen() SOUND:SetPlayBackCallback(frame.playbackFunction, frame.sampleCount) end + frame.EndCommand = function(self) + -- triggers if the screen the visualizer is loaded on gets deleted (a transition or exit) + SOUND:ClearPlayBackCallback() + end + frame.ResetVisualizerMessageCommand = function(self) + screen = SCREENMAN:GetTopScreen() + SOUND:SetPlayBackCallback(frame.playbackFunction, frame.sampleCount) + end + frame[#frame + 1] = frame.sound return frame end