diff --git a/KeyboardAudioVisualizer/ApplicationManager.cs b/KeyboardAudioVisualizer/ApplicationManager.cs index 14db244..8fae58d 100644 --- a/KeyboardAudioVisualizer/ApplicationManager.cs +++ b/KeyboardAudioVisualizer/ApplicationManager.cs @@ -72,7 +72,12 @@ namespace KeyboardAudioVisualizer _configurationWindow.Show(); } - private void Exit() => Application.Current.Shutdown(); + private void Exit() + { + RGBSurface.Instance.Dispose(); + AudioProcessor.Instance.Dispose(); + Application.Current.Shutdown(); + } #endregion } diff --git a/KeyboardAudioVisualizer/AudioCapture/CSCoreAudioInput.cs b/KeyboardAudioVisualizer/AudioCapture/CSCoreAudioInput.cs index e107287..f7163d8 100644 --- a/KeyboardAudioVisualizer/AudioCapture/CSCoreAudioInput.cs +++ b/KeyboardAudioVisualizer/AudioCapture/CSCoreAudioInput.cs @@ -38,6 +38,12 @@ namespace KeyboardAudioVisualizer.AudioCapture _capture.Start(); } + public void Dispose() + { + _capture?.Stop(); + _capture?.Dispose(); + } + private void OnSoundDataAvailable(object sender, DataAvailableEventArgs dataAvailableEventArgs) { int readCount; diff --git a/KeyboardAudioVisualizer/AudioCapture/IAudioInput.cs b/KeyboardAudioVisualizer/AudioCapture/IAudioInput.cs index 74d64b0..beb8a1a 100644 --- a/KeyboardAudioVisualizer/AudioCapture/IAudioInput.cs +++ b/KeyboardAudioVisualizer/AudioCapture/IAudioInput.cs @@ -1,8 +1,10 @@ -namespace KeyboardAudioVisualizer.AudioCapture +using System; + +namespace KeyboardAudioVisualizer.AudioCapture { public delegate void AudioData(float[] data, int offset, int count); - public interface IAudioInput + public interface IAudioInput : IDisposable { int SampleRate { get; } diff --git a/KeyboardAudioVisualizer/AudioProcessing/AudioProcessor.cs b/KeyboardAudioVisualizer/AudioProcessing/AudioProcessor.cs index c5a8385..98ef042 100644 --- a/KeyboardAudioVisualizer/AudioProcessing/AudioProcessor.cs +++ b/KeyboardAudioVisualizer/AudioProcessing/AudioProcessor.cs @@ -1,11 +1,12 @@ -using KeyboardAudioVisualizer.AudioCapture; +using System; +using KeyboardAudioVisualizer.AudioCapture; using KeyboardAudioVisualizer.AudioProcessing.Equalizer; using KeyboardAudioVisualizer.AudioProcessing.Spectrum; using KeyboardAudioVisualizer.AudioProcessing.VisualizationPRovider; namespace KeyboardAudioVisualizer.AudioProcessing { - public class AudioProcessor + public class AudioProcessor : IDisposable { #region Constants @@ -72,6 +73,8 @@ namespace KeyboardAudioVisualizer.AudioProcessing return sampleSize; } + public void Dispose() => _audioInput.Dispose(); + #endregion } }