Commit Graph

18 Commits

Author SHA1 Message Date
Max Kellermann 975ca2dae5 output_all: include chunk.h
The source output_all.c accesses music_chunk struct members, but did
not include chunk.h directly.
2009-03-14 15:26:27 +01:00
Avuton Olrich 0aee49bdf8 all: Update copyright header.
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.
2009-03-13 11:51:55 -07:00
Max Kellermann e3b9b57ecd output_all: fix off-by-one error in audio_output_all_check()
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.
2009-03-12 19:49:10 +01:00
Max Kellermann 2b57863144 output_all: clear input_audio_format on close
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.
2009-03-10 21:04:47 +01:00
Max Kellermann f2ec6ee184 output_all: don't allow audio_format==NULL in audio_output_all_open()
Don't allow reopening an audio device after pause with
audio_format==NULL, force the caller to provide the audio_format each
time.
2009-03-10 21:04:45 +01:00
Max Kellermann 3291666b57 output: play from a music_pipe object
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.
2009-03-09 19:25:26 +01:00
Max Kellermann 27193d8402 output_all: fix boolean short circuit in update()
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".
2009-03-07 23:48:28 +01:00
Max Kellermann b13cd03f75 output_all: audio_output_all_update() returns bool
audio_output_all_update() returns true when there is at least open
output device which is open.
2009-03-07 19:55:57 +01:00
Max Kellermann f298fcf3a6 output_init: return GError on error
Do error handling with GError instead of aborting with g_error().
2009-03-01 13:31:56 +01:00
Max Kellermann ec4fd9fd88 output: use GTimer instead of time_t for reopen after failure
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.
2009-02-28 20:43:23 +01:00
Max Kellermann 9e61c0503e output_all: print a warning when all outputs are disabled
When all outputs are disabled, MPD printed only a meaningless message
"problems opening audio device", although it didn't attempt to open a
device.
2009-02-26 22:21:32 +01:00
Max Kellermann 58c201ce14 output_all: removed "audio_outputs!=NULL" check
After initialization, audio_outputs is always non-NULL.  Don't check
that.
2009-02-26 22:14:54 +01:00
Max Kellermann 9512704055 output: set a GLib log domain 2009-02-25 19:53:38 +01:00
Max Kellermann 46c15e4ab3 output: include cleanup
Don't include output_api.h in output_internal.h.  This change requires
adding missing includes in several sources.
2009-02-16 01:51:50 +01:00
Max Kellermann b21e8ad4a5 output_all: immediately reopen output on play
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.
2009-02-10 22:15:42 +01:00
Max Kellermann facf146cfd output_all: moved code to audio_output_all_finished()
audio_output_all_finished() returns bool, not int.
2009-02-10 18:51:53 +01:00
Max Kellermann 4493a96425 output_all: no CamelCase
Renamed functions and variables.
2009-02-10 18:51:51 +01:00
Max Kellermann a3a6eefcfe audio: moved code to output_all.c
Moved code which deals with all audio outputs at once into a separate
library.
2009-02-10 18:51:49 +01:00