summaryrefslogtreecommitdiffstats
path: root/src/plugins/android/src/wrappers/jni/androidcamera.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/android/src/wrappers/jni/androidcamera.cpp')
-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()