From fe0c4ff3c26c64aea46b8fa49456e8b40ef8dc05 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 7 Jan 2015 19:11:04 +0100 Subject: [PATCH] output/recorder: move code to method Commit() --- src/output/plugins/RecorderOutputPlugin.cxx | 22 +++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/output/plugins/RecorderOutputPlugin.cxx b/src/output/plugins/RecorderOutputPlugin.cxx index 52fdb229f..f83a2edbd 100644 --- a/src/output/plugins/RecorderOutputPlugin.cxx +++ b/src/output/plugins/RecorderOutputPlugin.cxx @@ -86,6 +86,12 @@ struct RecorderOutput { void SendTag(const Tag &tag); size_t Play(const void *chunk, size_t size, Error &error); + +private: + /** + * Finish the encoder and commit the file. + */ + bool Commit(Error &error); }; static constexpr Domain recorder_output_domain("recorder_output"); @@ -223,19 +229,27 @@ RecorderOutput::Open(AudioFormat &audio_format, Error &error) return true; } -inline void -RecorderOutput::Close() +inline bool +RecorderOutput::Commit(Error &error) { /* flush the encoder and write the rest to the file */ - if (encoder_end(encoder, IgnoreError())) - EncoderToFile(IgnoreError()); + bool success = encoder_end(encoder, error) && + EncoderToFile(error); /* now really close everything */ encoder_close(encoder); close(fd); + + return success; +} + +inline void +RecorderOutput::Close() +{ + Commit(IgnoreError()); } inline void