diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-05-14 03:02:36 +0200 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-05-14 03:02:36 +0200 |
commit | 7ef21f7ed206749252fbd03f673a8588890828b1 (patch) | |
tree | cfba547a521bc5f5c2ccbf829a1f0f0830620fee /src/plugins/android/src/wrappers | |
parent | 268d78ca745bf7d54545e51a4f22e2fa24a8675c (diff) | |
parent | 333aecfd4190b067f29332d3a5087530d92d59b3 (diff) |
Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: I03225f5e980a69246b046351f7d7d8e84f102ca0
Diffstat (limited to 'src/plugins/android/src/wrappers')
-rw-r--r-- | src/plugins/android/src/wrappers/jni/androidcamera.cpp | 12 |
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() |