diff options
Diffstat (limited to 'src/lib/job.cc')
| -rw-r--r-- | src/lib/job.cc | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/lib/job.cc b/src/lib/job.cc index 784defc91..37bf462fc 100644 --- a/src/lib/job.cc +++ b/src/lib/job.cc @@ -39,6 +39,7 @@ using std::list; using std::cout; using boost::shared_ptr; using boost::optional; +using boost::function; #define LOG_ERROR_NC(...) _film->log()->log (__VA_ARGS__, Log::TYPE_ERROR); @@ -434,3 +435,15 @@ Job::resume () _pause_changed.notify_all (); } } + +void +Job::when_finished (boost::signals2::connection& connection, function<void()> finished) +{ + boost::mutex::scoped_lock lm (_state_mutex); + if (_state == FINISHED_OK || _state == FINISHED_ERROR || _state == FINISHED_CANCELLED) { + finished (); + } else { + connection = Finished.connect (finished); + } +} + |
