summaryrefslogtreecommitdiffstats
path: root/src/plugins/android/src/wrappers
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-05-14 03:02:36 +0200
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-05-14 03:02:36 +0200
commit7ef21f7ed206749252fbd03f673a8588890828b1 (patch)
treecfba547a521bc5f5c2ccbf829a1f0f0830620fee /src/plugins/android/src/wrappers
parent268d78ca745bf7d54545e51a4f22e2fa24a8675c (diff)
parent333aecfd4190b067f29332d3a5087530d92d59b3 (diff)
Merge remote-tracking branch 'origin/5.12' into 5.13
Diffstat (limited to 'src/plugins/android/src/wrappers')
-rw-r--r--src/plugins/android/src/wrappers/jni/androidcamera.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/plugins/android/src/wrappers/jni/androidcamera.cpp b/src/plugins/android/src/wrappers/jni/androidcamera.cpp
index e3afddd59..90af0119a 100644
--- a/src/plugins/android/src/wrappers/jni/androidcamera.cpp
+++ b/src/plugins/android/src/wrappers/jni/androidcamera.cpp
@@ -832,10 +832,17 @@ AndroidCameraPrivate::~AndroidCameraPrivate()
{
}
+static qint32 s_activeCameras = 0;
+
bool AndroidCameraPrivate::init(int cameraId)
{
m_cameraId = cameraId;
QJNIEnvironmentPrivate env;
+
+ const bool opened = s_activeCameras & (1 << cameraId);
+ if (opened)
+ return false;
+
m_camera = QJNIObjectPrivate::callStaticObjectMethod("android/hardware/Camera",
"open",
"(I)Landroid/hardware/Camera;",
@@ -854,6 +861,7 @@ bool AndroidCameraPrivate::init(int cameraId)
QJNIObjectPrivate params = m_camera.callObjectMethod("getParameters",
"()Landroid/hardware/Camera$Parameters;");
m_parameters = QJNIObjectPrivate(params);
+ s_activeCameras |= 1 << cameraId;
return true;
}
@@ -864,8 +872,10 @@ void AndroidCameraPrivate::release()
m_parametersMutex.lock();
m_parameters = QJNIObjectPrivate();
m_parametersMutex.unlock();
- if (m_camera.isValid())
+ if (m_camera.isValid()) {
m_camera.callMethod<void>("release");
+ s_activeCameras &= ~(1 << m_cameraId);
+ }
}
bool AndroidCameraPrivate::lock()