| Commit message (Collapse) | Author | Files | Lines |
|
Replaces GLib's g_ascii_strncasecmp().
|
|
Prepare to migrate away from GLib. Currently, we're still using GLib
as a backend.
|
|
Replaces GLib's GError.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
After we've been hit by Large File Support problems several times in
the past week (which only occur on 32 bit platforms, which I don't
have), this is yet another attempt to fix the issue.
|
|
Add a "mode" argument to open_cloexec() instead.
|
|
Added the "fd_util" library, which attempts to use the new thread-safe
Linux system calls pipe2(), accept4() and the options O_CLOEXEC,
SOCK_CLOEXEC. Without these, it falls back to FD_CLOEXEC, which is
not thread safe.
This is particularly important for the "pipe" output plugin (and
others, such as JACK/PulseAudio), because we were heavily leaking file
descriptors to child processes.
|
|
This allows the mixer object to access its associated audio output
object.
|
|
|
|
|
|
Added an assertion in mixer_set_volume(). Removed the range checks
from the ALSA and OSS plugins.
|
|
Detect misconfiguration during MPD startup.
|
|
The MPD core guarantees that methods are always invoked in a
consistent state. This means we can remove lots of checks from the
volume methods.
|
|
strncasecmp() is locale dependent, but we only need ASCII here.
|
|
Instead of replacing NULL with the default path in the open() method,
pass the default path to config_get_block_string().
|
|
Use config_get_block_string() instead of config_dup_block_string().
|
|
When getting or setting the volume fails, the MPD core close the
mixer. Moved the duplicated code from the mixer plugins.
|
|
Remember if a mixer object is open or closed. Don't call open() again
if it is already open. This guarantees that the mixer plugin is
always called in a consistent state, and we will be able to remove
lots of checks from the implementations.
To support mixers which are automatically opened even if the audio
output is still closed (to set the volume before playback starts),
this patch also adds the "global" flag to the mixer_plugin struct.
Both ALSA and OSS set this flag, while PULSE does not.
|
|
This updates the copyright header to all be the same, which is
pretty much an update of where to mail request for a copy of the GPL
and the years of the MPD project. This also puts all committers under
'The Music Player Project' umbrella. These entries should go
individually in the AUTHORS file, for consistancy.
|
|
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".
|
|
|