MixerPlugin: add EventLoop& init() parameter
This commit is contained in:
@@ -25,7 +25,8 @@
|
||||
#include <assert.h>
|
||||
|
||||
Mixer *
|
||||
mixer_new(const struct mixer_plugin *plugin, void *ao,
|
||||
mixer_new(EventLoop &event_loop,
|
||||
const mixer_plugin *plugin, void *ao,
|
||||
const config_param ¶m,
|
||||
Error &error)
|
||||
{
|
||||
@@ -33,7 +34,7 @@ mixer_new(const struct mixer_plugin *plugin, void *ao,
|
||||
|
||||
assert(plugin != nullptr);
|
||||
|
||||
mixer = plugin->init(ao, param, error);
|
||||
mixer = plugin->init(event_loop, ao, param, error);
|
||||
|
||||
assert(mixer == nullptr || mixer->IsPlugin(*plugin));
|
||||
|
||||
|
@@ -27,11 +27,12 @@
|
||||
|
||||
class Error;
|
||||
class Mixer;
|
||||
class EventLoop;
|
||||
struct mixer_plugin;
|
||||
struct config_param;
|
||||
|
||||
Mixer *
|
||||
mixer_new(const mixer_plugin *plugin, void *ao,
|
||||
mixer_new(EventLoop &event_loop, const mixer_plugin *plugin, void *ao,
|
||||
const config_param ¶m,
|
||||
Error &error);
|
||||
|
||||
|
@@ -29,6 +29,7 @@
|
||||
|
||||
struct config_param;
|
||||
class Mixer;
|
||||
class EventLoop;
|
||||
class Error;
|
||||
|
||||
struct mixer_plugin {
|
||||
@@ -41,7 +42,8 @@ struct mixer_plugin {
|
||||
* nullptr to ignore errors
|
||||
* @return a mixer object, or nullptr on error
|
||||
*/
|
||||
Mixer *(*init)(void *ao, const config_param ¶m,
|
||||
Mixer *(*init)(EventLoop &event_loop, void *ao,
|
||||
const config_param ¶m,
|
||||
Error &error);
|
||||
|
||||
/**
|
||||
|
@@ -21,7 +21,6 @@
|
||||
#include "mixer/MixerInternal.hxx"
|
||||
#include "output/OutputAPI.hxx"
|
||||
#include "GlobalEvents.hxx"
|
||||
#include "Main.hxx"
|
||||
#include "event/MultiSocketMonitor.hxx"
|
||||
#include "event/DeferredMonitor.hxx"
|
||||
#include "event/Loop.hxx"
|
||||
@@ -62,6 +61,8 @@ private:
|
||||
};
|
||||
|
||||
class AlsaMixer final : public Mixer {
|
||||
EventLoop &event_loop;
|
||||
|
||||
const char *device;
|
||||
const char *control;
|
||||
unsigned int index;
|
||||
@@ -75,7 +76,8 @@ class AlsaMixer final : public Mixer {
|
||||
AlsaMixerMonitor *monitor;
|
||||
|
||||
public:
|
||||
AlsaMixer():Mixer(alsa_mixer_plugin) {}
|
||||
AlsaMixer(EventLoop &_event_loop)
|
||||
:Mixer(alsa_mixer_plugin), event_loop(_event_loop) {}
|
||||
|
||||
void Configure(const config_param ¶m);
|
||||
bool Setup(Error &error);
|
||||
@@ -162,10 +164,11 @@ AlsaMixer::Configure(const config_param ¶m)
|
||||
}
|
||||
|
||||
static Mixer *
|
||||
alsa_mixer_init(gcc_unused void *ao, const config_param ¶m,
|
||||
alsa_mixer_init(EventLoop &event_loop, gcc_unused void *ao,
|
||||
const config_param ¶m,
|
||||
gcc_unused Error &error)
|
||||
{
|
||||
AlsaMixer *am = new AlsaMixer();
|
||||
AlsaMixer *am = new AlsaMixer(event_loop);
|
||||
am->Configure(param);
|
||||
|
||||
return am;
|
||||
@@ -237,7 +240,7 @@ AlsaMixer::Setup(Error &error)
|
||||
|
||||
snd_mixer_elem_set_callback(elem, alsa_mixer_elem_callback);
|
||||
|
||||
monitor = new AlsaMixerMonitor(*main_loop, handle);
|
||||
monitor = new AlsaMixerMonitor(event_loop, handle);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@@ -96,7 +96,8 @@ OssMixer::Configure(const config_param ¶m, Error &error)
|
||||
}
|
||||
|
||||
static Mixer *
|
||||
oss_mixer_init(gcc_unused void *ao, const config_param ¶m,
|
||||
oss_mixer_init(gcc_unused EventLoop &event_loop, gcc_unused void *ao,
|
||||
const config_param ¶m,
|
||||
Error &error)
|
||||
{
|
||||
OssMixer *om = new OssMixer();
|
||||
|
@@ -143,7 +143,8 @@ pulse_mixer_on_change(PulseMixer *pm,
|
||||
}
|
||||
|
||||
static Mixer *
|
||||
pulse_mixer_init(void *ao, gcc_unused const config_param ¶m,
|
||||
pulse_mixer_init(gcc_unused EventLoop &event_loop, void *ao,
|
||||
gcc_unused const config_param ¶m,
|
||||
Error &error)
|
||||
{
|
||||
PulseOutput *po = (PulseOutput *)ao;
|
||||
|
@@ -34,7 +34,8 @@ struct RoarMixer final : public Mixer {
|
||||
};
|
||||
|
||||
static Mixer *
|
||||
roar_mixer_init(void *ao, gcc_unused const config_param ¶m,
|
||||
roar_mixer_init(gcc_unused EventLoop &event_loop, void *ao,
|
||||
gcc_unused const config_param ¶m,
|
||||
gcc_unused Error &error)
|
||||
{
|
||||
return new RoarMixer((RoarOutput *)ao);
|
||||
|
@@ -67,7 +67,7 @@ struct SoftwareMixer final : public Mixer {
|
||||
};
|
||||
|
||||
static Mixer *
|
||||
software_mixer_init(gcc_unused void *ao,
|
||||
software_mixer_init(gcc_unused EventLoop &event_loop, gcc_unused void *ao,
|
||||
gcc_unused const config_param ¶m,
|
||||
gcc_unused Error &error)
|
||||
{
|
||||
|
@@ -55,7 +55,8 @@ winmm_volume_encode(int volume)
|
||||
}
|
||||
|
||||
static Mixer *
|
||||
winmm_mixer_init(void *ao, gcc_unused const config_param ¶m,
|
||||
winmm_mixer_init(gcc_unused EventLoop &event_loop, void *ao,
|
||||
gcc_unused const config_param ¶m,
|
||||
gcc_unused Error &error)
|
||||
{
|
||||
assert(ao != nullptr);
|
||||
|
Reference in New Issue
Block a user