output/Multiple: migrate from class Error to C++ exceptions

This commit is contained in:
Max Kellermann
2016-11-09 12:31:23 +01:00
parent 98a12c49dd
commit 445e82be75
3 changed files with 53 additions and 64 deletions

View File

@@ -58,14 +58,8 @@ try {
AudioOutput *output = audio_output_new(event_loop, block,
mixer_listener,
pc, error);
if (output == nullptr) {
if (block.line > 0)
FormatFatalError("line %i: %s",
block.line,
error.GetMessage());
else
FatalError(error);
}
if (output == nullptr)
throw std::runtime_error(error.GetMessage());
return output;
} catch (const std::runtime_error &e) {
@@ -192,32 +186,27 @@ MultipleOutputs::SetReplayGainMode(ReplayGainMode mode)
ao->SetReplayGainMode(mode);
}
bool
MultipleOutputs::Play(MusicChunk *chunk, Error &error)
void
MultipleOutputs::Play(MusicChunk *chunk)
{
assert(buffer != nullptr);
assert(pipe != nullptr);
assert(chunk != nullptr);
assert(chunk->CheckFormat(input_audio_format));
if (!Update()) {
if (!Update())
/* TODO: obtain real error */
error.Set(output_domain, "Failed to open audio output");
return false;
}
throw std::runtime_error("Failed to open audio output");
pipe->Push(chunk);
for (auto ao : outputs)
ao->LockPlay();
return true;
}
bool
void
MultipleOutputs::Open(const AudioFormat audio_format,
MusicBuffer &_buffer,
Error &error)
MusicBuffer &_buffer)
{
bool ret = false, enabled = false;
@@ -251,17 +240,16 @@ MultipleOutputs::Open(const AudioFormat audio_format,
ret = true;
}
if (!enabled)
error.Set(output_domain, "All audio outputs are disabled");
else if (!ret)
/* TODO: obtain real error */
error.Set(output_domain, "Failed to open audio output");
if (!ret)
if (!enabled) {
/* close all devices if there was an error */
Close();
return ret;
throw std::runtime_error("All audio outputs are disabled");
} else if (!ret) {
/* close all devices if there was an error */
Close();
/* TODO: obtain real error */
throw std::runtime_error("Failed to open audio output");
}
}
/**