player/Control: initialize seek_time in EnqueueSongLocked()
Allows removing a few special cases in the player thread.
This commit is contained in:
parent
cf1de78205
commit
990f473bb3
@ -417,6 +417,7 @@ private:
|
|||||||
assert(next_song == nullptr);
|
assert(next_song == nullptr);
|
||||||
|
|
||||||
next_song = song;
|
next_song = song;
|
||||||
|
seek_time = SongTime::zero();
|
||||||
SynchronousCommand(PlayerCommand::QUEUE);
|
SynchronousCommand(PlayerCommand::QUEUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -324,9 +324,7 @@ Player::StartDecoder(MusicPipe &_pipe)
|
|||||||
assert(queued || pc.command == PlayerCommand::SEEK);
|
assert(queued || pc.command == PlayerCommand::SEEK);
|
||||||
assert(pc.next_song != nullptr);
|
assert(pc.next_song != nullptr);
|
||||||
|
|
||||||
SongTime start_time = pc.next_song->GetStartTime();
|
SongTime start_time = pc.next_song->GetStartTime() + pc.seek_time;
|
||||||
if (pc.command == PlayerCommand::SEEK)
|
|
||||||
start_time += pc.seek_time;
|
|
||||||
|
|
||||||
dc.Start(new DetachedSong(*pc.next_song),
|
dc.Start(new DetachedSong(*pc.next_song),
|
||||||
start_time, pc.next_song->GetEndTime(),
|
start_time, pc.next_song->GetEndTime(),
|
||||||
@ -950,9 +948,7 @@ Player::Run()
|
|||||||
|
|
||||||
pc.Lock();
|
pc.Lock();
|
||||||
pc.state = PlayerState::PLAY;
|
pc.state = PlayerState::PLAY;
|
||||||
|
elapsed_time = pc.seek_time;
|
||||||
if (pc.command == PlayerCommand::SEEK)
|
|
||||||
elapsed_time = pc.seek_time;
|
|
||||||
|
|
||||||
pc.CommandFinished();
|
pc.CommandFinished();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user