summaryrefslogtreecommitdiff
path: root/src/player/Control.cxx
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2015-11-11 17:31:32 +0100
committerMax Kellermann <max@duempel.org>2015-11-11 19:56:09 +0100
commit4404f20cf47e8c9c7f850955a9838d4b353f41fd (patch)
treef7101d67e826fa6cbf59e0cb6af5e3c10a13a497 /src/player/Control.cxx
parentfaca8bc02a67ed06e60a4d827d5d7bb69027b4f3 (diff)
player/Control: Seek*() returns Error information
Diffstat (limited to 'src/player/Control.cxx')
-rw-r--r--src/player/Control.cxx19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/player/Control.cxx b/src/player/Control.cxx
index 4c30159ba..6c78290cf 100644
--- a/src/player/Control.cxx
+++ b/src/player/Control.cxx
@@ -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);