summaryrefslogtreecommitdiff
path: root/src/lib/job.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-08-16 23:14:57 +0100
committerCarl Hetherington <cth@carlh.net>2018-08-16 23:14:57 +0100
commitbb990ccc49ee724a8af2ad80bde066374af4b68a (patch)
tree4893842f188db4f268def9a2a518bc7858a099b0 /src/lib/job.cc
parent773346b1518c68dc7533b381a90e77ae276ae6bc (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.cc20
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