output/Multiple: use std::unique_ptr<FilteredAudioOutput>

This commit is contained in:
Max Kellermann
2018-01-04 10:14:26 +01:00
parent f52b3b4e04
commit ef71df60f6
5 changed files with 27 additions and 32 deletions
+11 -4
View File
@@ -37,13 +37,21 @@ static constexpr PeriodClock::Duration REOPEN_AFTER = std::chrono::seconds(10);
struct notify audio_output_client_notify;
AudioOutputControl::AudioOutputControl(FilteredAudioOutput *_output,
AudioOutputControl::AudioOutputControl(std::unique_ptr<FilteredAudioOutput> _output,
AudioOutputClient &_client) noexcept
:output(_output), client(_client),
:output(std::move(_output)), client(_client),
thread(BIND_THIS_METHOD(Task))
{
}
AudioOutputControl::~AudioOutputControl() noexcept
{
assert(!fail_timer.IsDefined());
assert(!thread.IsDefined());
assert(output == nullptr);
assert(!open);
}
void
AudioOutputControl::Configure(const ConfigBlock &block)
{
@@ -377,6 +385,5 @@ AudioOutputControl::FinishDestroy() noexcept
if (thread.IsDefined())
thread.Join();
delete output;
output = nullptr;
output.reset();
}