MixerPlugin: add EventLoop& init() parameter

This commit is contained in:
Max Kellermann
2014-02-05 00:02:02 +01:00
parent 4a28333039
commit e8938b1069
16 changed files with 51 additions and 43 deletions

View File

@@ -112,7 +112,7 @@ audio_output_mixer_type(const config_param &param)
}
static Mixer *
audio_output_load_mixer(AudioOutput *ao,
audio_output_load_mixer(EventLoop &event_loop, AudioOutput *ao,
const config_param &param,
const struct mixer_plugin *plugin,
Filter &filter_chain,
@@ -129,10 +129,10 @@ audio_output_load_mixer(AudioOutput *ao,
if (plugin == nullptr)
return nullptr;
return mixer_new(plugin, ao, param, error);
return mixer_new(event_loop, plugin, ao, param, error);
case MIXER_TYPE_SOFTWARE:
mixer = mixer_new(&software_mixer_plugin, nullptr,
mixer = mixer_new(event_loop, &software_mixer_plugin, nullptr,
config_param(),
IgnoreError());
assert(mixer != nullptr);
@@ -211,7 +211,8 @@ AudioOutput::Configure(const config_param &param, Error &error)
}
static bool
audio_output_setup(AudioOutput *ao, const config_param &param,
audio_output_setup(EventLoop &event_loop, AudioOutput *ao,
const config_param &param,
Error &error)
{
@@ -241,7 +242,7 @@ audio_output_setup(AudioOutput *ao, const config_param &param,
/* set up the mixer */
Error mixer_error;
ao->mixer = audio_output_load_mixer(ao, param,
ao->mixer = audio_output_load_mixer(event_loop, ao, param,
ao->plugin.mixer_plugin,
*ao->filter, mixer_error);
if (ao->mixer == nullptr && mixer_error.IsDefined())
@@ -277,7 +278,7 @@ audio_output_setup(AudioOutput *ao, const config_param &param,
}
AudioOutput *
audio_output_new(const config_param &param,
audio_output_new(EventLoop &event_loop, const config_param &param,
PlayerControl &pc,
Error &error)
{
@@ -316,7 +317,7 @@ audio_output_new(const config_param &param,
if (ao == nullptr)
return nullptr;
if (!audio_output_setup(ao, param, error)) {
if (!audio_output_setup(event_loop, ao, param, error)) {
ao_plugin_finish(ao);
return nullptr;
}

View File

@@ -32,6 +32,7 @@
class Error;
class Filter;
class MusicPipe;
class EventLoop;
struct music_chunk;
struct config_param;
struct PlayerControl;
@@ -422,7 +423,7 @@ private:
extern struct notify audio_output_client_notify;
AudioOutput *
audio_output_new(const config_param &param,
audio_output_new(EventLoop &event_loop, const config_param &param,
PlayerControl &pc,
Error &error);

View File

@@ -50,10 +50,10 @@ MultipleOutputs::~MultipleOutputs()
}
static AudioOutput *
LoadOutput(PlayerControl &pc, const config_param &param)
LoadOutput(EventLoop &event_loop, PlayerControl &pc, const config_param &param)
{
Error error;
AudioOutput *output = audio_output_new(param, pc, error);
AudioOutput *output = audio_output_new(event_loop, param, pc, error);
if (output == nullptr) {
if (param.line > 0)
FormatFatalError("line %i: %s",
@@ -67,12 +67,12 @@ LoadOutput(PlayerControl &pc, const config_param &param)
}
void
MultipleOutputs::Configure(PlayerControl &pc)
MultipleOutputs::Configure(EventLoop &event_loop, PlayerControl &pc)
{
const config_param *param = nullptr;
while ((param = config_get_next_param(CONF_AUDIO_OUTPUT,
param)) != nullptr) {
auto output = LoadOutput(pc, *param);
auto output = LoadOutput(event_loop, pc, *param);
if (FindByName(output->name) != nullptr)
FormatFatalError("output devices with identical "
"names: %s", output->name);
@@ -83,7 +83,7 @@ MultipleOutputs::Configure(PlayerControl &pc)
if (outputs.empty()) {
/* auto-detect device */
const config_param empty;
auto output = LoadOutput(pc, empty);
auto output = LoadOutput(event_loop, pc, empty);
outputs.push_back(output);
}
}

View File

@@ -37,6 +37,7 @@
struct AudioFormat;
class MusicBuffer;
class MusicPipe;
class EventLoop;
struct music_chunk;
struct PlayerControl;
struct AudioOutput;
@@ -72,7 +73,7 @@ public:
MultipleOutputs();
~MultipleOutputs();
void Configure(PlayerControl &pc);
void Configure(EventLoop &event_loop, PlayerControl &pc);
/**
* Returns the total number of audio output devices, including