aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/output/plugins/RecorderOutputPlugin.cxx17
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 &param, Error &error_r) {
return base.Configure(param, error_r);
}
@@ -133,15 +139,6 @@ RecorderOutput::Create(const config_param &param, 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,