diff options
-rw-r--r-- | src/output/plugins/RecorderOutputPlugin.cxx | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/src/output/plugins/RecorderOutputPlugin.cxx b/src/output/plugins/RecorderOutputPlugin.cxx index 8f5379d74..5f6a55418 100644 --- a/src/output/plugins/RecorderOutputPlugin.cxx +++ b/src/output/plugins/RecorderOutputPlugin.cxx @@ -56,8 +56,14 @@ struct RecorderOutput { RecorderOutput() :base(recorder_output_plugin), + encoder(nullptr), path(AllocatedPath::Null()) {} + ~RecorderOutput() { + if (encoder != nullptr) + encoder_finish(encoder); + } + bool Initialize(const config_param ¶m, Error &error_r) { return base.Configure(param, error_r); } @@ -133,15 +139,6 @@ RecorderOutput::Create(const config_param ¶m, Error &error) return recorder; } -static void -recorder_output_finish(AudioOutput *ao) -{ - RecorderOutput *recorder = (RecorderOutput *)ao; - - encoder_finish(recorder->encoder); - delete recorder; -} - inline bool RecorderOutput::EncoderToFile(Error &error) { @@ -241,7 +238,7 @@ const struct AudioOutputPlugin recorder_output_plugin = { "recorder", nullptr, &Wrapper::Init, - recorder_output_finish, + &Wrapper::Finish, nullptr, nullptr, &Wrapper::Open, |