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