Stopping resource policy thread properly to avoid freezing while closing camera
authorMohammed Sameer <msameer@foolab.org>
Mon, 24 Dec 2012 20:29:53 +0000 (22:29 +0200)
committerMohammed Sameer <msameer@foolab.org>
Mon, 24 Dec 2012 20:29:53 +0000 (22:29 +0200)
qml/RecordingPage.qml
src/cameraresources.cpp

index 6d0edab..a8ca768 100644 (file)
@@ -28,7 +28,6 @@ import "data.js" as Data
 
 // TODO: on error ?
 // TODO: losing resources in the middle of recording will produce corrupted video
-// TODO: closing camera in the middle of recording will hang camera
 // TODO: optional resources?
 
 CameraPage {
index a414ee3..ebc2fdf 100644 (file)
@@ -45,8 +45,12 @@ CameraResources::CameraResources(QObject *parent) :
 }
 
 CameraResources::~CameraResources() {
-  m_thread.quit();
-  m_thread.wait();
+  acquire(CameraResources::None);
+  m_thread.exit(0);
+
+  while (m_thread.isRunning()) {
+    m_thread.wait(10);
+  }
 
   delete m_worker;
   m_worker = 0;
@@ -99,9 +103,7 @@ CameraResourcesWorker::CameraResourcesWorker(QObject *parent) :
 }
 
 CameraResourcesWorker::~CameraResourcesWorker() {
-  bool ok;
 
-  acquire(&ok, CameraResources::None);
 }
 
 void CameraResourcesWorker::init() {