diff options
| author | Carl Hetherington <cth@carlh.net> | 2021-12-20 00:35:11 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2022-04-29 00:45:40 +0200 |
| commit | 78ca79cde19db630b1abfe8f00f49e87bb7e4068 (patch) | |
| tree | 162e17e2413e57e10cf841212c5d29b9ff97b400 /src/lib/audio_processor.cc | |
| parent | f25061b8a6f35e490b731caefe63560045b10a1f (diff) | |
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.
Diffstat (limited to 'src/lib/audio_processor.cc')
| -rw-r--r-- | src/lib/audio_processor.cc | 51 |
1 files changed, 36 insertions, 15 deletions
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 const *> AudioProcessor::_all; -list<AudioProcessor const *> AudioProcessor::_non_experimental; +vector<unique_ptr<const AudioProcessor>> AudioProcessor::_experimental; +vector<unique_ptr<const AudioProcessor>> 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<AudioProcessor>(new MidSideDecoder())); - _all.push_back (new UpmixerA(48000)); - _all.push_back (new UpmixerB(48000)); + _experimental.push_back (unique_ptr<AudioProcessor>(new UpmixerA(48000))); + _experimental.push_back (unique_ptr<AudioProcessor>(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<AudioProcessor const *> +vector<AudioProcessor const *> AudioProcessor::visible () { + vector<AudioProcessor const *> 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<AudioProcessor const *> +vector<AudioProcessor const *> AudioProcessor::all () { - return _all; + vector<AudioProcessor const *> raw; + for (auto& processor: _experimental) { + raw.push_back (processor.get()); + } + + for (auto& processor: _non_experimental) { + raw.push_back (processor.get()); + } + + return raw; } |
