summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2020-02-19 21:55:04 +0100
committerCarl Hetherington <cth@carlh.net>2020-02-19 21:55:04 +0100
commit5b1b70c86df7225a2a102bdde3b38ea591a6dcbb (patch)
treee118fb861d57ca74d25c45dda8b09dc09c8db0c5 /src/lib
parent0b15f493754d1b630338b17f2a6dfc66ccc4f6b7 (diff)
Can't put boost::thread in a std::list with our macOS compiler.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/j2k_encoder.cc12
-rw-r--r--src/lib/j2k_encoder.h2
2 files changed, 8 insertions, 6 deletions
diff --git a/src/lib/j2k_encoder.cc b/src/lib/j2k_encoder.cc
index 96b5b86e7..ac420517f 100644
--- a/src/lib/j2k_encoder.cc
+++ b/src/lib/j2k_encoder.cc
@@ -250,7 +250,7 @@ J2KEncoder::terminate_threads ()
boost::mutex::scoped_lock threads_lock (_threads_mutex);
int n = 0;
- for (list<boost::thread>::iterator i = _threads.begin(); i != _threads.end(); ++i) {
+ BOOST_FOREACH (boost::thread* i, _threads) {
/* Be careful not to throw in here otherwise _threads will not be clear()ed */
LOG_GENERAL ("Terminating thread %1 of %2", n + 1, _threads.size ());
i->interrupt ();
@@ -263,6 +263,7 @@ J2KEncoder::terminate_threads ()
}
LOG_GENERAL_NC ("Thread terminated");
++n;
+ delete i;
}
_threads.clear ();
@@ -396,13 +397,14 @@ J2KEncoder::servers_list_changed ()
if (!Config::instance()->only_servers_encode ()) {
for (int i = 0; i < Config::instance()->master_encoding_threads (); ++i) {
- _threads.push_back (boost::thread(boost::bind(&J2KEncoder::encoder_thread, this, optional<EncodeServerDescription>())));
+ boost::thread* t = new boost::thread (boost::bind(&J2KEncoder::encoder_thread, this, optional<EncodeServerDescription>()));
#ifdef DCPOMATIC_LINUX
- pthread_setname_np (_threads.back().native_handle(), "encode-worker");
+ pthread_setname_np (t->native_handle(), "encode-worker");
#endif
+ _threads.push_back (t);
#ifdef BOOST_THREAD_PLATFORM_WIN32
if (windows_xp) {
- SetThreadAffinityMask (_threads.back().native_handle(), 1 << i);
+ SetThreadAffinityMask (t->native_handle(), 1 << i);
}
#endif
}
@@ -415,7 +417,7 @@ J2KEncoder::servers_list_changed ()
LOG_GENERAL (N_("Adding %1 worker threads for remote %2"), i.threads(), i.host_name ());
for (int j = 0; j < i.threads(); ++j) {
- _threads.push_back (boost::thread(boost::bind(&J2KEncoder::encoder_thread, this, i)));
+ _threads.push_back (new boost::thread(boost::bind(&J2KEncoder::encoder_thread, this, i)));
}
}
diff --git a/src/lib/j2k_encoder.h b/src/lib/j2k_encoder.h
index b57c4df7e..b4542c40a 100644
--- a/src/lib/j2k_encoder.h
+++ b/src/lib/j2k_encoder.h
@@ -89,7 +89,7 @@ private:
/** Mutex for _threads */
mutable boost::mutex _threads_mutex;
- std::list<boost::thread> _threads;
+ std::list<boost::thread*> _threads;
mutable boost::mutex _queue_mutex;
std::list<boost::shared_ptr<DCPVideo> > _queue;
/** condition to manage thread wakeups when we have nothing to do */