Commit 256f40d4 authored by Max Kellermann's avatar Max Kellermann

output/Multiple: obtain detailed error information in Open()

parent ef9acc54
...@@ -228,12 +228,16 @@ MultipleOutputs::Open(const AudioFormat audio_format, ...@@ -228,12 +228,16 @@ MultipleOutputs::Open(const AudioFormat audio_format,
EnableDisable(); EnableDisable();
Update(); Update();
std::exception_ptr first_error;
for (auto ao : outputs) { for (auto ao : outputs) {
if (ao->enabled) if (ao->enabled)
enabled = true; enabled = true;
if (ao->open) if (ao->open)
ret = true; ret = true;
else if (ao->last_error && !first_error)
first_error = ao->last_error;
} }
if (!enabled) { if (!enabled) {
...@@ -243,7 +247,11 @@ MultipleOutputs::Open(const AudioFormat audio_format, ...@@ -243,7 +247,11 @@ MultipleOutputs::Open(const AudioFormat audio_format,
} else if (!ret) { } else if (!ret) {
/* close all devices if there was an error */ /* close all devices if there was an error */
Close(); Close();
/* TODO: obtain real error */
if (first_error)
/* we have details, so throw that */
std::rethrow_exception(first_error);
else
throw std::runtime_error("Failed to open audio output"); throw std::runtime_error("Failed to open audio output");
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment