From c24c3b171f61a673d4905aba4bc94c04a22adea3 Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Thu, 13 Mar 2014 16:35:01 +0100 Subject: 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 --- 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() -- cgit v1.2.3