output/init: use the real-time I/O thread only for the ALSA plugin

This commit is contained in:
Max Kellermann
2021-02-24 16:06:06 +01:00
parent 29b49dd630
commit 2efa142ec9
5 changed files with 21 additions and 10 deletions

View File

@@ -49,14 +49,14 @@ MultipleOutputs::~MultipleOutputs() noexcept
}
static std::unique_ptr<FilteredAudioOutput>
LoadOutput(EventLoop &event_loop,
LoadOutput(EventLoop &event_loop, EventLoop &rt_event_loop,
const ReplayGainConfig &replay_gain_config,
MixerListener &mixer_listener,
const ConfigBlock &block,
const AudioOutputDefaults &defaults,
FilterFactory *filter_factory)
try {
return audio_output_new(event_loop, replay_gain_config, block,
return audio_output_new(event_loop, rt_event_loop, replay_gain_config, block,
defaults,
filter_factory,
mixer_listener);
@@ -69,14 +69,15 @@ try {
}
static std::unique_ptr<AudioOutputControl>
LoadOutputControl(EventLoop &event_loop,
LoadOutputControl(EventLoop &event_loop, EventLoop &rt_event_loop,
const ReplayGainConfig &replay_gain_config,
MixerListener &mixer_listener,
AudioOutputClient &client, const ConfigBlock &block,
const AudioOutputDefaults &defaults,
FilterFactory *filter_factory)
{
auto output = LoadOutput(event_loop, replay_gain_config,
auto output = LoadOutput(event_loop, rt_event_loop,
replay_gain_config,
mixer_listener,
block, defaults, filter_factory);
auto control = std::make_unique<AudioOutputControl>(std::move(output), client);
@@ -85,7 +86,7 @@ LoadOutputControl(EventLoop &event_loop,
}
void
MultipleOutputs::Configure(EventLoop &event_loop,
MultipleOutputs::Configure(EventLoop &event_loop, EventLoop &rt_event_loop,
const ConfigData &config,
const ReplayGainConfig &replay_gain_config)
{
@@ -94,7 +95,7 @@ MultipleOutputs::Configure(EventLoop &event_loop,
for (const auto &block : config.GetBlockList(ConfigBlockOption::AUDIO_OUTPUT)) {
block.SetUsed();
auto output = LoadOutputControl(event_loop,
auto output = LoadOutputControl(event_loop, rt_event_loop,
replay_gain_config,
mixer_listener,
client, block, defaults,
@@ -110,6 +111,7 @@ MultipleOutputs::Configure(EventLoop &event_loop,
/* auto-detect device */
const ConfigBlock empty;
outputs.emplace_back(LoadOutputControl(event_loop,
rt_event_loop,
replay_gain_config,
mixer_listener,
client, empty, defaults,