Commit 915182bc authored by Max Kellermann's avatar Max Kellermann

output_all: reset elapsed_time at song border

Another quirk fixed: after the last chunk of a song has been played, the "elapsed_time" variable is set to the chunk's time stamp. When the client receives the PLAYER idle event and asks MPD for the current time stamp, MPD will return the last time stamp of the previous song when it hasn't played the first chunk of the current song yet.
parent d3b763a4
......@@ -558,6 +558,14 @@ audio_output_all_close(void)
audio_output_all_elapsed_time = -1.0;
}
void
audio_output_all_song_border(void)
{
/* clear the elapsed_time pointer at the beginning of a new
song */
audio_output_all_elapsed_time = 0.0;
}
float
audio_output_all_get_elapsed_time(void)
{
......
......@@ -142,6 +142,12 @@ void
audio_output_all_cancel(void);
/**
* Indicate that a new song will begin now.
*/
void
audio_output_all_song_border(void);
/**
* Returns the "elapsed_time" stamp of the most recently finished
* chunk. A negative value is returned when no chunk has been
* finished yet.
......
......@@ -736,6 +736,8 @@ player_song_border(struct player *player)
music_pipe_free(player->pipe);
player->pipe = player->dc->pipe;
audio_output_all_song_border();
if (!player_wait_for_decoder(player))
return false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment