From 78ca79cde19db630b1abfe8f00f49e87bb7e4068 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Mon, 20 Dec 2021 00:35:11 +0100 Subject: Fix a load of stuff that wasn't being freed on close. Nothing really that important, but it cleans up the valgrind leak check reports. --- src/lib/audio_processor.cc | 51 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 15 deletions(-) (limited to 'src/lib/audio_processor.cc') diff --git a/src/lib/audio_processor.cc b/src/lib/audio_processor.cc index 1eb796b38..6f3b96145 100644 --- a/src/lib/audio_processor.cc +++ b/src/lib/audio_processor.cc @@ -27,31 +27,36 @@ using std::string; -using std::list; +using std::unique_ptr; +using std::vector; -list AudioProcessor::_all; -list AudioProcessor::_non_experimental; +vector> AudioProcessor::_experimental; +vector> AudioProcessor::_non_experimental; void AudioProcessor::setup_audio_processors () { - auto mid_side = new MidSideDecoder (); - _all.push_back (mid_side); - _non_experimental.push_back (mid_side); + _non_experimental.push_back (unique_ptr(new MidSideDecoder())); - _all.push_back (new UpmixerA(48000)); - _all.push_back (new UpmixerB(48000)); + _experimental.push_back (unique_ptr(new UpmixerA(48000))); + _experimental.push_back (unique_ptr(new UpmixerB(48000))); } AudioProcessor const * AudioProcessor::from_id (string id) { - for (auto i: _all) { + for (auto& i: _non_experimental) { if (i->id() == id) { - return i; + return i.get(); + } + } + + for (auto& i: _experimental) { + if (i->id() == id) { + return i.get(); } } @@ -59,19 +64,35 @@ AudioProcessor::from_id (string id) } -list +vector AudioProcessor::visible () { + vector raw; if (Config::instance()->show_experimental_audio_processors()) { - return _all; + for (auto& processor: _experimental) { + raw.push_back (processor.get()); + } } - return _non_experimental; + for (auto& processor: _non_experimental) { + raw.push_back (processor.get()); + } + + return raw; } -list +vector AudioProcessor::all () { - return _all; + vector raw; + for (auto& processor: _experimental) { + raw.push_back (processor.get()); + } + + for (auto& processor: _non_experimental) { + raw.push_back (processor.get()); + } + + return raw; } -- cgit v1.2.3