Assert if we're about to set up 0 encoding threads.
authorCarl Hetherington <cth@carlh.net>
Fri, 6 Dec 2024 20:28:08 +0000 (21:28 +0100)
committerCarl Hetherington <cth@carlh.net>
Mon, 9 Dec 2024 00:40:48 +0000 (01:40 +0100)
src/lib/j2k_encoder.cc
test/j2k_encode_threading_test.cc

index 15046b51d2c0bc192a126876b8cf39a9906aabad..b416f921d22d114fbdd4380a58be72e3181415e7 100644 (file)
@@ -365,6 +365,7 @@ void
 J2KEncoder::remake_threads(int cpu, int gpu, list<EncodeServerDescription> servers)
 {
        LOG_GENERAL("Making threads: CPU=%1, GPU=%2, Remote=%3", cpu, gpu, servers.size());
+       DCPOMATIC_ASSERT((cpu + gpu + servers.size()) > 0);
 
        boost::mutex::scoped_lock lm (_threads_mutex);
        if (_ending) {
index 1f57f41437ae7379220d76e42ed6c5b948e56b90..48a639faa65e26a77a38933a1ea8661b81797a57 100644 (file)
@@ -102,7 +102,7 @@ BOOST_AUTO_TEST_CASE(frames_not_lost_when_threads_disappear)
        auto encoder = dynamic_cast<J2KEncoder*>(dynamic_pointer_cast<DCPFilmEncoder>(job->_encoder)->_encoder.get());
 
        while (JobManager::instance()->work_to_do()) {
-               encoder->remake_threads(rand() % 8, 0, {});
+               encoder->remake_threads((rand() % 7) + 1, 0, {});
                dcpomatic_sleep_seconds(1);
        }