| Commit message (Collapse) | Author | Files | Lines |
|
This patch follows the commit 21bb10f4b.
>From Max Kellermann:
> I removed the daemonization changes in main.c. Please explain why you
> changed that. If you need it for some reason, make that a separate
> patch with a good description of your rationale.
> That's the biggest flaw of your code: it opens the mixer device in the
> init() method, while the open() method is empty. When the pulse
> daemon is not available (either during MPD startup or when it dies
> while MPD runs), the plugin will not even attempt to reconnect to
> pulse. Please move the code to the open() method, to make that work.
I changed the daemonize call as the fork losts the connection to the
pulse server. According to your remark, the init() method should be
moved to the open() ones.
With the modification, mpd is able to reconnect the pulse mixer after
restarting the pulseaudio daemon.
Signed-off-by: David Guibert <david.guibert@gmail.com>
Signed-off-by: Max Kellermann <max@duempel.org>
|
|
|
|
Shorten some log messages, let GLib add the "pulse_mixer" prefix.
|
|
Don't include output_api.h - this is not an output plugin. Added
missing explicit conf.h and string.h includes.
|
|
This patch introduces the mixer for the pulse output.
Technically speaking, the pulse index is needed to get or set
the volume. You must define callback fonctions to get this index since
the pulse output in mpd is done using the simpe api. The pulse simple api
does not provide the index of the newly defined output.
So callback fonctions are associated to the pulse context.
The list of all the sink input is then retreived.
Then we select the name of the mpd pulse output and control
its volume by its associated index number.
Signed-off-by: Patrice Linel <patnathanael@gmail.com>
Signed-off-by: David Guibert <david.guibert@gmail.com>
[mk: fixed whitespace errors and broke long lines; removed
daemonization changes from main.c]
|
|
The method control() is too complicated, and overengineered. Replace
it with two trivial functions: get_volume() and set_volume().
|
|
The mixer plugins should re-use the mixer struct and incorporate it in
their object class.
|
|
Both methods are always called together. There is no point in having
them separate. This simplifies the code, because the old configure()
method could be called more than once, and had to free old
allocations.
|
|
Those have been superseded by the new legacy configuration code.
|
|
The plugin structures must never be modified.
|
|
|
|
Return the default value in the conf_get_block_*() functions when
param==NULL was passed.
This simplifies a lot of code, because all initialization can be done
in one code path, regardless whether configuration is present.
|
|
All config_get_block_*() functions should accept constant config_param
pointers.
|
|
This replaces lots of getBlockParam() invocations.
|
|
The g_free() function includes a NULL check. We don't have to do it
twice.
|
|
Renamed functions, types, variables.
|
|
When MPD starts without audio output configuration, the "param"
variable is NULL. This triggers a segmentation fault in both mixer
plugins.
|
|
mixer (passing parameters)
|
|
This patch tryes to introduce pluggable mixer (struct mixer_plugin) along with some basic infrastructure (mixer_* functions). Instance of mixer (struct mixer) is used in
alsa and oss output plugin
|
|
|
|
There is no reason to use the shortcut "mix" instead of "mixer".
|
|
|