diff options
author | Max Kellermann <max@duempel.org> | 2009-11-09 22:16:26 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2009-11-09 22:16:26 +0100 |
commit | 3359f8785ef9b595b3ad943fdd2227f98ce56990 (patch) | |
tree | 248b51245d424b4700fffffb2eb8efd89f1ed6a0 /src/output_thread.c | |
parent | 96b974bc452e6b33ada281c5ccb4df7b9492e1da (diff) | |
download | mpd-3359f8785ef9b595b3ad943fdd2227f98ce56990.tar.gz mpd-3359f8785ef9b595b3ad943fdd2227f98ce56990.tar.xz mpd-3359f8785ef9b595b3ad943fdd2227f98ce56990.zip |
output_thread: added command DRAIN
This command manually drains the hardware buffer. This is useful when
the player thread want to make sure that everything has been played.
Diffstat (limited to 'src/output_thread.c')
-rw-r--r-- | src/output_thread.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/output_thread.c b/src/output_thread.c index 40906d82f..fb1701591 100644 --- a/src/output_thread.c +++ b/src/output_thread.c @@ -450,6 +450,19 @@ static gpointer audio_output_task(gpointer arg) the new command first */ continue; + case AO_COMMAND_DRAIN: + if (ao->open) { + assert(ao->chunk == NULL); + assert(music_pipe_peek(ao->pipe) == NULL); + + g_mutex_unlock(ao->mutex); + ao_plugin_drain(ao->plugin, ao->data); + g_mutex_lock(ao->mutex); + } + + ao_command_finished(ao); + continue; + case AO_COMMAND_CANCEL: ao->chunk = NULL; if (ao->open) |