diff options
| author | Carl Hetherington <cth@carlh.net> | 2023-03-16 01:47:03 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2023-03-16 22:45:18 +0100 |
| commit | a6c4b4fa16d9c6597e362044b875f3d6df80753f (patch) | |
| tree | 3e340bf5fb3d4865961034c8e372364c21fe958f /src/lib/job.cc | |
| parent | 442fcbf670488eab7ddc21c3aa6e49f22d6c5f31 (diff) | |
Emit the state of the job with the Finished signals.
Diffstat (limited to 'src/lib/job.cc')
| -rw-r--r-- | src/lib/job.cc | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/src/lib/job.cc b/src/lib/job.cc index 53527d265..912c6a6ef 100644 --- a/src/lib/job.cc +++ b/src/lib/job.cc @@ -358,12 +358,31 @@ Job::set_state (State s) } if (finished) { - emit (boost::bind (boost::ref (Finished))); - FinishedImmediate (); + auto const result = state_to_result(s); + emit(boost::bind(boost::ref(Finished), result)); + FinishedImmediate(result); } } +Job::Result +Job::state_to_result(State state) const +{ + switch (state) { + case FINISHED_OK: + return Result::RESULT_OK; + case FINISHED_ERROR: + return Result::RESULT_ERROR; + case FINISHED_CANCELLED: + return Result::RESULT_CANCELLED; + default: + DCPOMATIC_ASSERT(false); + }; + + DCPOMATIC_ASSERT(false); +} + + /** @return DCPTime (in seconds) that this sub-job has been running */ int Job::elapsed_sub_time () const @@ -677,11 +696,11 @@ Job::resume () void -Job::when_finished (boost::signals2::connection& connection, function<void()> finished) +Job::when_finished(boost::signals2::connection& connection, function<void(Result)> finished) { boost::mutex::scoped_lock lm (_state_mutex); if (_state == FINISHED_OK || _state == FINISHED_ERROR || _state == FINISHED_CANCELLED) { - finished (); + finished(state_to_result(_state)); } else { connection = Finished.connect (finished); } |
