projects
/
dcpomatic.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Various thread cleanups.
[dcpomatic.git]
/
src
/
lib
/
writer.cc
diff --git
a/src/lib/writer.cc
b/src/lib/writer.cc
index 915376055b31f9f55561dc7a5ca6b48fa44746a9..d85db56894ccb59525ab18ef00303810a08d7ee6 100644
(file)
--- a/
src/lib/writer.cc
+++ b/
src/lib/writer.cc
@@
-68,7
+68,6
@@
using namespace dcpomatic;
Writer::Writer (shared_ptr<const Film> film, weak_ptr<Job> j)
: _film (film)
, _job (j)
Writer::Writer (shared_ptr<const Film> film, weak_ptr<Job> j)
: _film (film)
, _job (j)
- , _thread (0)
, _finish (false)
, _queued_full_in_memory (0)
/* These will be reset to sensible values when J2KEncoder is created */
, _finish (false)
, _queued_full_in_memory (0)
/* These will be reset to sensible values when J2KEncoder is created */
@@
-107,9
+106,9
@@
Writer::Writer (shared_ptr<const Film> film, weak_ptr<Job> j)
void
Writer::start ()
{
void
Writer::start ()
{
- _thread =
new boost::thread (boost::bind
(&Writer::thread, this));
+ _thread =
boost::thread (boost::bind
(&Writer::thread, this));
#ifdef DCPOMATIC_LINUX
#ifdef DCPOMATIC_LINUX
- pthread_setname_np (_thread
->
native_handle(), "writer");
+ pthread_setname_np (_thread
.
native_handle(), "writer");
#endif
}
#endif
}
@@
-465,7
+464,7
@@
void
Writer::terminate_thread (bool can_throw)
{
boost::mutex::scoped_lock lock (_state_mutex);
Writer::terminate_thread (bool can_throw)
{
boost::mutex::scoped_lock lock (_state_mutex);
- if (
_thread == 0
) {
+ if (
!_thread.joinable()
) {
return;
}
return;
}
@@
-474,22
+473,17
@@
Writer::terminate_thread (bool can_throw)
_full_condition.notify_all ();
lock.unlock ();
_full_condition.notify_all ();
lock.unlock ();
- if (_thread->joinable ()) {
- _thread->join ();
- }
+ _thread.join ();
if (can_throw) {
rethrow ();
}
if (can_throw) {
rethrow ();
}
-
- delete _thread;
- _thread = 0;
}
void
Writer::finish ()
{
}
void
Writer::finish ()
{
- if (!_thread) {
+ if (!_thread
.joinable()
) {
return;
}
return;
}
@@
-561,6
+555,7
@@
Writer::finish ()
cpl->set_metadata (meta);
cpl->set_ratings (vector_to_list(_film->ratings()));
cpl->set_metadata (meta);
cpl->set_ratings (vector_to_list(_film->ratings()));
+ cpl->set_content_version_label_text (_film->content_version());
shared_ptr<const dcp::CertificateChain> signer;
if (_film->is_signed ()) {
shared_ptr<const dcp::CertificateChain> signer;
if (_film->is_signed ()) {
@@
-780,4
+775,7
@@
Writer::set_digest_progress (Job* job, float progress)
}
job->set_progress (min_progress);
}
job->set_progress (min_progress);
+
+ Waker waker;
+ waker.nudge ();
}
}