From c24c3b171f61a673d4905aba4bc94c04a22adea3 Mon Sep 17 00:00:00 2001
From: Yoann Lopes <yoann.lopes@digia.com>
Date: Thu, 13 Mar 2014 16:35:01 +0100
Subject: [PATCH] Android: fix QMediaRecorder failing to start in some cases.

Because camera operations are performed in a dedicated thread, starting
a recorder was sometimes failing because the camera was not yet ready
(unlocking it was not done yet). Camera locking and unlocking are now
synchronous operations.

Change-Id: I92c3c2f3666b63e7451e4ee1ab89dcbc85ae6c24
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
---
 src/plugins/android/src/wrappers/jcamera.cpp | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/plugins/android/src/wrappers/jcamera.cpp b/src/plugins/android/src/wrappers/jcamera.cpp
index 23f3e14b4..50a65a779 100644
--- a/src/plugins/android/src/wrappers/jcamera.cpp
+++ b/src/plugins/android/src/wrappers/jcamera.cpp
@@ -306,12 +306,16 @@ int JCamera::cameraId() const
 
 void JCamera::lock()
 {
-    QMetaObject::invokeMethod(d, "callVoidMethod", Q_ARG(QByteArray, "lock"));
+    QMetaObject::invokeMethod(d, "callVoidMethod",
+                              Qt::BlockingQueuedConnection,
+                              Q_ARG(QByteArray, "lock"));
 }
 
 void JCamera::unlock()
 {
-    QMetaObject::invokeMethod(d, "callVoidMethod", Q_ARG(QByteArray, "unlock"));
+    QMetaObject::invokeMethod(d, "callVoidMethod",
+                              Qt::BlockingQueuedConnection,
+                              Q_ARG(QByteArray, "unlock"));
 }
 
 void JCamera::reconnect()
-- 
GitLab