diff options
author | Max Kellermann <max@duempel.org> | 2009-10-30 16:28:15 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2009-10-30 16:28:15 +0100 |
commit | 73cff374fd94a1c16e0201fcda020396c0f41962 (patch) | |
tree | 20fd66a68625db58cbad46ecf674dbfeda29c36d /src/output_all.c | |
parent | cec019efffe4ebb87ec2c630003e6bce5083bb5e (diff) | |
download | mpd-73cff374fd94a1c16e0201fcda020396c0f41962.tar.gz mpd-73cff374fd94a1c16e0201fcda020396c0f41962.tar.xz mpd-73cff374fd94a1c16e0201fcda020396c0f41962.zip |
{player,output}_thread: fixed elapsed_time quirks
Right after seeking and song change, the elapsed_time shows old
information, because the output thread didn't finish a full chunk
yet. This patch re-adds a second elapsed_time variable, and keeps
track of a fallback value, in case the output thread can't provide a
reliable value.
Diffstat (limited to 'src/output_all.c')
-rw-r--r-- | src/output_all.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/output_all.c b/src/output_all.c index 05cd1d350..08f4ee0dc 100644 --- a/src/output_all.c +++ b/src/output_all.c @@ -55,7 +55,7 @@ static struct music_pipe *g_mp; /** * The "elapsed_time" stamp of the most recently finished chunk. */ -static float audio_output_all_elapsed_time; +static float audio_output_all_elapsed_time = -1.0; unsigned int audio_output_count(void) { @@ -482,6 +482,8 @@ audio_output_all_cancel(void) if (g_mp != NULL) music_pipe_clear(g_mp, g_music_buffer); + + audio_output_all_elapsed_time = -1.0; } void @@ -498,12 +500,13 @@ audio_output_all_close(void) music_pipe_clear(g_mp, g_music_buffer); music_pipe_free(g_mp); g_mp = NULL; - audio_output_all_elapsed_time = 0.0; } g_music_buffer = NULL; audio_format_clear(&input_audio_format); + + audio_output_all_elapsed_time = -1.0; } float |