projects
/
dcpomatic.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Various time-related fixes; fix daft hang on decodes.
[dcpomatic.git]
/
src
/
lib
/
job.cc
diff --git
a/src/lib/job.cc
b/src/lib/job.cc
index 1c66d87d379a7ba8395fa128be4c4aa26876220b..2e6385d62e8499a37ed427fb3650c1e22aec5196 100644
(file)
--- a/
src/lib/job.cc
+++ b/
src/lib/job.cc
@@
-26,6
+26,7
@@
#include <libdcp/exceptions.h>
#include "job.h"
#include "util.h"
#include <libdcp/exceptions.h>
#include "job.h"
#include "util.h"
+#include "cross.h"
#include "i18n.h"
#include "i18n.h"
@@
-34,8
+35,6
@@
using std::list;
using std::stringstream;
using boost::shared_ptr;
using std::stringstream;
using boost::shared_ptr;
-/** @param s Film that we are operating on.
- */
Job::Job (shared_ptr<Film> f)
: _film (f)
, _thread (0)
Job::Job (shared_ptr<Film> f)
: _film (f)
, _thread (0)
@@
-93,7
+92,7
@@
Job::run_wrapper ()
set_state (FINISHED_ERROR);
set_error (
e.what (),
set_state (FINISHED_ERROR);
set_error (
e.what (),
- _("It is not known what caused this error. The best idea is to report the problem to the D
VD-o-matic mailing list (dvd
omatic@carlh.net)")
+ _("It is not known what caused this error. The best idea is to report the problem to the D
CP-o-matic mailing list (dcp
omatic@carlh.net)")
);
} catch (...) {
);
} catch (...) {
@@
-102,7
+101,7
@@
Job::run_wrapper ()
set_state (FINISHED_ERROR);
set_error (
_("Unknown error"),
set_state (FINISHED_ERROR);
set_error (
_("Unknown error"),
- _("It is not known what caused this error. The best idea is to report the problem to the D
VD-o-matic mailing list (dvd
omatic@carlh.net)")
+ _("It is not known what caused this error. The best idea is to report the problem to the D
CP-o-matic mailing list (dcp
omatic@carlh.net)")
);
}
);
}
@@
-155,6
+154,13
@@
Job::finished_cancelled () const
return _state == FINISHED_CANCELLED;
}
return _state == FINISHED_CANCELLED;
}
+bool
+Job::paused () const
+{
+ boost::mutex::scoped_lock lm (_state_mutex);
+ return _state == PAUSED;
+}
+
/** Set the state of this job.
* @param s New state.
*/
/** Set the state of this job.
* @param s New state.
*/
@@
-190,6
+196,10
@@
Job::set_progress (float p)
_progress_unknown = false;
_stack.back().normalised = p;
boost::this_thread::interruption_point ();
_progress_unknown = false;
_stack.back().normalised = p;
boost::this_thread::interruption_point ();
+
+ if (paused ()) {
+ dcpomatic_sleep (1);
+ }
}
/** @return fractional overall progress, or -1 if not known */
}
/** @return fractional overall progress, or -1 if not known */
@@
-326,3
+336,19
@@
Job::cancel ()
_thread->interrupt ();
_thread->join ();
}
_thread->interrupt ();
_thread->join ();
}
+
+void
+Job::pause ()
+{
+ if (running ()) {
+ set_state (PAUSED);
+ }
+}
+
+void
+Job::resume ()
+{
+ if (paused ()) {
+ set_state (RUNNING);
+ }
+}