player/Control: Seek*() returns Error information
This commit is contained in:
parent
faca8bc02a
commit
4404f20cf4
@ -204,8 +204,8 @@ PlayerControl::LockEnqueueSong(DetachedSong *song)
|
||||
EnqueueSongLocked(song);
|
||||
}
|
||||
|
||||
void
|
||||
PlayerControl::SeekLocked(DetachedSong *song, SongTime t)
|
||||
bool
|
||||
PlayerControl::SeekLocked(DetachedSong *song, SongTime t, Error &error_r)
|
||||
{
|
||||
assert(song != nullptr);
|
||||
|
||||
@ -214,21 +214,32 @@ PlayerControl::SeekLocked(DetachedSong *song, SongTime t)
|
||||
|
||||
assert(next_song == nullptr);
|
||||
|
||||
ClearError();
|
||||
next_song = song;
|
||||
seek_time = t;
|
||||
SynchronousCommand(PlayerCommand::SEEK);
|
||||
|
||||
assert(next_song == nullptr);
|
||||
|
||||
if (error_type != PlayerError::NONE) {
|
||||
assert(error.IsDefined());
|
||||
error_r.Set(error);
|
||||
return false;
|
||||
}
|
||||
|
||||
assert(!error.IsDefined());
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
PlayerControl::LockSeek(DetachedSong *song, SongTime t)
|
||||
PlayerControl::LockSeek(DetachedSong *song, SongTime t, Error &error_r)
|
||||
{
|
||||
assert(song != nullptr);
|
||||
|
||||
{
|
||||
const ScopeLock protect(mutex);
|
||||
SeekLocked(song, t);
|
||||
if (!SeekLocked(song, t, error_r))
|
||||
return false;
|
||||
}
|
||||
|
||||
idle_add(IDLE_PLAYER);
|
||||
|
@ -425,7 +425,7 @@ private:
|
||||
SynchronousCommand(PlayerCommand::QUEUE);
|
||||
}
|
||||
|
||||
void SeekLocked(DetachedSong *song, SongTime t);
|
||||
bool SeekLocked(DetachedSong *song, SongTime t, Error &error_r);
|
||||
|
||||
public:
|
||||
/**
|
||||
@ -442,7 +442,7 @@ public:
|
||||
* @return true on success, false on failure (e.g. if MPD isn't
|
||||
* playing currently)
|
||||
*/
|
||||
bool LockSeek(DetachedSong *song, SongTime t);
|
||||
bool LockSeek(DetachedSong *song, SongTime t, Error &error_r);
|
||||
|
||||
void SetCrossFade(float cross_fade_seconds);
|
||||
|
||||
|
@ -211,12 +211,8 @@ playlist::SeekSongOrder(PlayerControl &pc, unsigned i, SongTime seek_time,
|
||||
queued_song = nullptr;
|
||||
}
|
||||
|
||||
if (!pc.LockSeek(new DetachedSong(queue.GetOrder(i)), seek_time)) {
|
||||
if (!pc.LockSeek(new DetachedSong(queue.GetOrder(i)), seek_time, error)) {
|
||||
UpdateQueuedSong(pc, queued_song);
|
||||
|
||||
// TODO: fix error code
|
||||
error.Set(playlist_domain, int(PlaylistResult::NOT_PLAYING),
|
||||
"Decoder failed to seek");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user