output/Init: migrate _setup() from class Error to C++ exceptions
This commit is contained in:
parent
cf2b814629
commit
ac9ce0b3ad
@ -205,11 +205,10 @@ AudioOutput::Configure(const ConfigBlock &block)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static void
|
||||||
audio_output_setup(EventLoop &event_loop, AudioOutput &ao,
|
audio_output_setup(EventLoop &event_loop, AudioOutput &ao,
|
||||||
MixerListener &mixer_listener,
|
MixerListener &mixer_listener,
|
||||||
const ConfigBlock &block,
|
const ConfigBlock &block)
|
||||||
Error &error)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
/* create the replay_gain filter */
|
/* create the replay_gain filter */
|
||||||
@ -258,9 +257,7 @@ audio_output_setup(EventLoop &event_loop, AudioOutput &ao,
|
|||||||
"No such mixer for output '%s'", ao.name);
|
"No such mixer for output '%s'", ao.name);
|
||||||
} else if (strcmp(replay_gain_handler, "software") != 0 &&
|
} else if (strcmp(replay_gain_handler, "software") != 0 &&
|
||||||
ao.prepared_replay_gain_filter != nullptr) {
|
ao.prepared_replay_gain_filter != nullptr) {
|
||||||
error.Set(config_domain,
|
throw std::runtime_error("Invalid \"replay_gain_handler\" value");
|
||||||
"Invalid \"replay_gain_handler\" value");
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* the "convert" filter must be the last one in the chain */
|
/* the "convert" filter must be the last one in the chain */
|
||||||
@ -270,8 +267,6 @@ audio_output_setup(EventLoop &event_loop, AudioOutput &ao,
|
|||||||
|
|
||||||
filter_chain_append(*ao.prepared_filter, "convert",
|
filter_chain_append(*ao.prepared_filter, "convert",
|
||||||
ao.convert_filter.Set(f));
|
ao.convert_filter.Set(f));
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AudioOutput *
|
AudioOutput *
|
||||||
@ -315,10 +310,11 @@ audio_output_new(EventLoop &event_loop, const ConfigBlock &block,
|
|||||||
if (ao == nullptr)
|
if (ao == nullptr)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
if (!audio_output_setup(event_loop, *ao, mixer_listener,
|
try {
|
||||||
block, error)) {
|
audio_output_setup(event_loop, *ao, mixer_listener, block);
|
||||||
|
} catch (...) {
|
||||||
ao_plugin_finish(ao);
|
ao_plugin_finish(ao);
|
||||||
return nullptr;
|
throw;
|
||||||
}
|
}
|
||||||
|
|
||||||
ao->player_control = &pc;
|
ao->player_control = &pc;
|
||||||
|
Loading…
Reference in New Issue
Block a user