Commit 3b71e2ab authored by Max Kellermann's avatar Max Kellermann

player/Thread: call DecoderCommand::SEEK only on existing decoder

If the decoder was just started, it already seeks to the desired position.
parent 30cad0c5
......@@ -575,6 +575,9 @@ Player::SeekDecoder()
/* re-start the decoder */
StartDecoder(*pipe);
ActivateDecoder();
if (!WaitDecoderStartup())
return false;
} else {
if (!IsDecoderAtCurrentSong()) {
/* the decoder is already decoding the "next" song,
......@@ -585,29 +588,31 @@ Player::SeekDecoder()
delete pc.next_song;
pc.next_song = nullptr;
queued = false;
}
/* wait for the decoder to complete initialization */
/* wait for the decoder to complete initialization
(just in case that happens to be still in
progress) */
if (!WaitDecoderStartup())
return false;
if (!WaitDecoderStartup())
return false;
/* send the SEEK command */
/* send the SEEK command */
SongTime where = pc.seek_time;
if (!pc.total_time.IsNegative()) {
const SongTime total_time(pc.total_time);
if (where > total_time)
where = total_time;
}
SongTime where = pc.seek_time;
if (!pc.total_time.IsNegative()) {
const SongTime total_time(pc.total_time);
if (where > total_time)
where = total_time;
}
if (!dc.Seek(where + start_time)) {
/* decoder failure */
pc.LockCommandFinished();
return false;
}
if (!dc.Seek(where + start_time)) {
/* decoder failure */
pc.LockCommandFinished();
return false;
}
elapsed_time = where;
elapsed_time = where;
}
pc.LockCommandFinished();
......
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