Add some new Waker calls.
authorCarl Hetherington <cth@carlh.net>
Mon, 4 Nov 2019 19:44:13 +0000 (20:44 +0100)
committerCarl Hetherington <cth@carlh.net>
Sat, 16 Nov 2019 21:46:39 +0000 (22:46 +0100)
Backported from 052ec34bd487a3645013e87a7062738284d050df in v2.15.x

src/lib/encode_server.cc
src/lib/ffmpeg_encoder.cc

index 16c65dba76f6df8d62c3546d9105fea6ea8662a2..314f8f68dcccda973d04ac683064fc2f25dec6de 100644 (file)
@@ -326,6 +326,9 @@ EncodeServer::handle (shared_ptr<Socket> socket)
 {
        boost::mutex::scoped_lock lock (_mutex);
 
+       Waker waker;
+       waker.nudge ();
+
        /* Wait until the queue has gone down a bit */
        while (_queue.size() >= _worker_threads.size() * 2 && !_terminate) {
                _full_condition.wait (lock);
index 07b69195605dfd35998448f1c1a9e885d1715276..3f5b6f5913a889e52cb6a91d8cc92578df35d43b 100644 (file)
@@ -119,6 +119,8 @@ FFmpegEncoder::go ()
                job->sub (_("Encoding"));
        }
 
+       Waker waker;
+
        list<DCPTimePeriod> reel_periods = _film->reels ();
        list<DCPTimePeriod>::const_iterator reel = reel_periods.begin ();
        list<FileEncoderSet>::iterator encoder = _file_encoders.begin ();
@@ -155,6 +157,8 @@ FFmpegEncoder::go ()
                        job->set_progress (float(i.get()) / _film->length().get());
                }
 
+               waker.nudge ();
+
                _butler->get_audio (interleaved, audio_frames);
                /* XXX: inefficient; butler interleaves and we deinterleave again */
                float* p = interleaved;