diff options
| author | Carl Hetherington <cth@carlh.net> | 2018-08-20 12:01:34 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2018-08-20 12:01:34 +0100 |
| commit | a638a231d1cf8d04840b62354911520dab6fb6b3 (patch) | |
| tree | 0a69b46481f8d1c098fc45431c9f24b5e232414f /src/lib/butler.cc | |
| parent | 2c0d0c5230addee44dc2cebd08d4f832550a3d6c (diff) | |
Allow nested butler suspensions.
Diffstat (limited to 'src/lib/butler.cc')
| -rw-r--r-- | src/lib/butler.cc | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/lib/butler.cc b/src/lib/butler.cc index 3a75e67d7..07cb7b22b 100644 --- a/src/lib/butler.cc +++ b/src/lib/butler.cc @@ -54,7 +54,7 @@ Butler::Butler (shared_ptr<Player> player, shared_ptr<Log> log, AudioMapping aud , _log (log) , _prepare_work (new boost::asio::io_service::work (_prepare_service)) , _pending_seek_accurate (false) - , _suspended (false) + , _suspended (0) , _finished (false) , _died (false) , _stop_thread (false) @@ -315,9 +315,9 @@ Butler::player_change (ChangeType type, bool frequent) boost::mutex::scoped_lock lm (_mutex); if (type == CHANGE_TYPE_PENDING) { - _suspended = true; + ++_suspended; } else if (type == CHANGE_TYPE_DONE) { - + --_suspended; if (_died || _pending_seek_position || frequent) { return; } @@ -334,8 +334,9 @@ Butler::player_change (ChangeType type, bool frequent) } seek_unlocked (seek_to, true); - _suspended = false; _awaiting = seek_to; + } else if (type == CHANGE_TYPE_CANCELLED) { + --_suspended; } } |
