diff options
| author | Carl Hetherington <cth@carlh.net> | 2018-08-16 23:14:57 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2018-08-16 23:14:57 +0100 |
| commit | bb990ccc49ee724a8af2ad80bde066374af4b68a (patch) | |
| tree | 4893842f188db4f268def9a2a518bc7858a099b0 /src/lib/job.cc | |
| parent | 773346b1518c68dc7533b381a90e77ae276ae6bc (diff) | |
Add pause/resume to the batch converter (#1248).
Add some missing locking to JobManager::decrease_priority.
Diffstat (limited to 'src/lib/job.cc')
| -rw-r--r-- | src/lib/job.cc | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/lib/job.cc b/src/lib/job.cc index 06416d1fe..ec6d5d306 100644 --- a/src/lib/job.cc +++ b/src/lib/job.cc @@ -519,13 +519,27 @@ Job::cancel () _thread = 0; } -void +/** @return true if the job was paused, false if it was not running */ +bool Job::pause_by_user () { - if (running ()) { - set_state (PAUSED_BY_USER); + bool paused = false; + { + boost::mutex::scoped_lock lm (_state_mutex); + /* We can set _state here directly because we have a lock and we aren't + setting the job to FINISHED_* + */ + if (_state == RUNNING) { + paused = true; + _state = PAUSED_BY_USER; + } + } + + if (paused) { _pause_changed.notify_all (); } + + return paused; } void |
