From d0390c98f6597df213b8e81732df6b2d07acd709 Mon Sep 17 00:00:00 2001 From: philippegorley <philippe.gorley@savoirfairelinux.com> Date: Thu, 24 Jan 2019 17:28:58 -0500 Subject: [PATCH] recorder: fix sequence of operations Change-Id: I1dc2f0c12cc7be2efea92add495fa42a982ad8a1 --- src/media/media_recorder.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/media/media_recorder.cpp b/src/media/media_recorder.cpp index 09a075e31e..d8d7fff6f2 100644 --- a/src/media/media_recorder.cpp +++ b/src/media/media_recorder.cpp @@ -99,8 +99,18 @@ MediaRecorder::startRecording() encoder_.reset(new MediaEncoder); RING_DBG() << "Start recording '" << getPath() << "'"; - if (initRecord() >= 0) + if (initRecord() >= 0) { isRecording_ = true; + // start thread after isRecording_ is set to true + ThreadPool::instance().run([rec = shared_from_this()] { + while (rec->isRecording()) { + rec->filterAndEncode(rec->videoFilter_.get(), rec->videoIdx_); + rec->filterAndEncode(rec->audioFilter_.get(), rec->audioIdx_); + } + rec->flush(); + rec->reset(); // allows recorder to be reused in same call + }); + } return 0; } @@ -247,14 +257,6 @@ MediaRecorder::initRecord() } RING_DBG() << "Recording initialized"; - ThreadPool::instance().run([rec = shared_from_this()] { - while (rec->isRecording()) { - rec->filterAndEncode(rec->videoFilter_.get(), rec->videoIdx_); - rec->filterAndEncode(rec->audioFilter_.get(), rec->audioIdx_); - } - rec->flush(); - rec->reset(); // allows recorder to be reused in same call - }); return 0; } -- GitLab