aboutsummaryrefslogtreecommitdiffstats
path: root/src/output_all.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* output_all: fix off-by-one error in audio_output_all_check()Max Kellermann2009-03-121-1/+1
| | | | | | | | When there are chunks which are not yet finished, audio_output_all_check() returned the size of its music pipe minus one. I can't remember exactly why I subtracted 1 from the return value, it must have had something to do with a former meaning of this function. Now it induces assertion failures.
* output_all: clear input_audio_format on closeMax Kellermann2009-03-101-0/+2
| | | | | | When the audio outputs are closed, also clear the audio format. If we don't do this, every call to audio_output_all_update() will open the device, even if it's meant to be paused.
* output_all: don't allow audio_format==NULL in audio_output_all_open()Max Kellermann2009-03-101-5/+3
| | | | | | Don't allow reopening an audio device after pause with audio_format==NULL, force the caller to provide the audio_format each time.
* output: play from a music_pipe objectMax Kellermann2009-03-091-42/+182
| | | | | | | | Instead of passing individual buffers to audio_output_all_play(), pass music_chunk objects. Append all those chunks asynchronously to a music_pipe instance. All output threads may then read chunks from this pipe. This reduces MPD's internal latency by an order of magnitude.
* output_all: fix boolean short circuit in update()Max Kellermann2009-03-071-2/+2
| | | | | | | Sometimes, audio_output_update() isn't called for the second device when the first one has succeeded. The patch "audio_output_all_update() returns bool" broke it, because the boolean evaluation ended after the first "true".
* output_all: audio_output_all_update() returns boolMax Kellermann2009-03-071-3/+12
| | | | | audio_output_all_update() returns true when there is at least open output device which is open.
* output_init: return GError on errorMax Kellermann2009-03-011-12/+3
| | | | Do error handling with GError instead of aborting with g_error().
* output: use GTimer instead of time_t for reopen after failureMax Kellermann2009-02-281-2/+8
| | | | | | | time() is not a monotonic timer, and MPD might get confused by clock skews. clock_gettime() provides a monotonic clock, but is not portable to non-POSIX systems (i.e. Windows). This patch uses GLib's GTimer API, which aims to be portable.
* output_all: print a warning when all outputs are disabledMax Kellermann2009-02-261-1/+7
| | | | | | When all outputs are disabled, MPD printed only a meaningless message "problems opening audio device", although it didn't attempt to open a device.
* output_all: removed "audio_outputs!=NULL" checkMax Kellermann2009-02-261-3/+0
| | | | | After initialization, audio_outputs is always non-NULL. Don't check that.
* output: set a GLib log domainMax Kellermann2009-02-251-0/+3
|
* output: include cleanupMax Kellermann2009-02-161-0/+2
| | | | | Don't include output_api.h in output_internal.h. This change requires adding missing includes in several sources.
* output_all: immediately reopen output on playMax Kellermann2009-02-101-0/+13
| | | | | | | When MPD explicitly starts playing, ignore the "REOPEN_AFTER" timeout. This timeout was useful when MPD attempted to reopen a failed device over and over, but it confuses users when they explicitly tell MPD to start playing, while MPD insists to wait for the 10 seconds to pass.
* output_all: moved code to audio_output_all_finished()Max Kellermann2009-02-101-13/+16
| | | | audio_output_all_finished() returns bool, not int.
* output_all: no CamelCaseMax Kellermann2009-02-101-58/+66
| | | | Renamed functions and variables.
* audio: moved code to output_all.cMax Kellermann2009-02-101-0/+270
Moved code which deals with all audio outputs at once into a separate library.