aboutsummaryrefslogtreecommitdiffstats
path: root/src/output
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2009-10-30 16:28:15 +0100
committerMax Kellermann <max@duempel.org>2009-10-30 16:28:15 +0100
commit73cff374fd94a1c16e0201fcda020396c0f41962 (patch)
tree20fd66a68625db58cbad46ecf674dbfeda29c36d /src/output
parentcec019efffe4ebb87ec2c630003e6bce5083bb5e (diff)
downloadmpd-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 '')
-rw-r--r--src/output_all.c7
-rw-r--r--src/output_all.h3
2 files changed, 7 insertions, 3 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
diff --git a/src/output_all.h b/src/output_all.h
index 2f5101f1b..91b6f3f5d 100644
--- a/src/output_all.h
+++ b/src/output_all.h
@@ -137,7 +137,8 @@ audio_output_all_cancel(void);
/**
* Returns the "elapsed_time" stamp of the most recently finished
- * chunk.
+ * chunk. A negative value is returned when no chunk has been
+ * finished yet.
*/
float
audio_output_all_get_elapsed_time(void);