summaryrefslogtreecommitdiff
path: root/src/lib/butler.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-09-04 12:50:25 +0100
committerCarl Hetherington <cth@carlh.net>2018-09-04 12:50:25 +0100
commita57717d54c34096d80a467ad78e9fdcecca70b2c (patch)
treeaee991e62c82443d7c2d780ce6cb7debe79ee1bc /src/lib/butler.cc
parent1938b1b08d38fc199717d1875a61ef05e5b965de (diff)
Allow the butler to say "try again later" when get_video() is called
while it's suspended. Then make the GUI follow that suggestion. Should
Diffstat (limited to 'src/lib/butler.cc')
-rw-r--r--src/lib/butler.cc14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/lib/butler.cc b/src/lib/butler.cc
index a127ee9bd..3e408c4d5 100644
--- a/src/lib/butler.cc
+++ b/src/lib/butler.cc
@@ -190,17 +190,27 @@ try
}
pair<shared_ptr<PlayerVideo>, DCPTime>
-Butler::get_video ()
+Butler::get_video (Error* e)
{
boost::mutex::scoped_lock lm (_mutex);
+ if (_suspended) {
+ if (e) {
+ *e = AGAIN;
+ }
+ return make_pair(shared_ptr<PlayerVideo>(), DCPTime());
+ }
+
/* Wait for data if we have none */
while (_video.empty() && !_finished && !_died) {
_arrived.wait (lm);
}
if (_video.empty()) {
- return make_pair (shared_ptr<PlayerVideo>(), DCPTime());
+ if (e) {
+ *e = NONE;
+ }
+ return make_pair(shared_ptr<PlayerVideo>(), DCPTime());
}
pair<shared_ptr<PlayerVideo>, DCPTime> const r = _video.get ();