| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
If a (global) mixer has been closed due to failure, don't reopen it
with every volume get/set. Leave it closed until it is explicitly
opened.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
In some rare cases, there was a race condition between the output
thread and the main thread: when you disable/enable an output device
in the main thread, this caused a crash in the output thread. Protect
the whole mixer struct with a GMutex to prevent that.
|
| |
|
|
|
|
|
|
| |
mixer_control.h should provide the functions needed to manipulate a
mixer, without exposing the internal mixer API (which is provided by
mixer_api.h).
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
When the init() method of a mixer plugin fails, mixer_new()
dereferences the NULL pointer.
|
| |
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
Allocate the mixer object when it is configured.
Merged mixer_configure() into mixer_new(). mixer_new() was quite
useless anyway.
|
|
|
|
| |
Don't use statically allocated mixer objects.
|
|
|
|
| |
The plugin structures must never be modified.
|
| |
|
|
|
|
|
| |
All config_get_block_*() functions should accept constant config_param
pointers.
|
|
|
|
| |
Renamed functions, types, variables.
|
|
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
|