summaryrefslogtreecommitdiffstats
path: root/core/java/android/hardware
diff options
context:
space:
mode:
authorRuben Brunk <rubenbrunk@google.com>2015-06-12 00:25:46 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-06-12 00:25:48 +0000
commit25f3a7d19b2fb9b33cb83d3d8f90c724cd26c9c9 (patch)
treec7ee934c222eed7da3378dff23d494639502bf3e /core/java/android/hardware
parentc37c7d9dbe38f7716c5d19ff13a0055e0bce7800 (diff)
parent0953b6461aed9770e0e537b40988e97582d74dbd (diff)
downloadframeworks_base-25f3a7d19b2fb9b33cb83d3d8f90c724cd26c9c9.zip
frameworks_base-25f3a7d19b2fb9b33cb83d3d8f90c724cd26c9c9.tar.gz
frameworks_base-25f3a7d19b2fb9b33cb83d3d8f90c724cd26c9c9.tar.bz2
Merge "Make CameraDeviceImpl#close() idempotent (for real)." into mnc-dev
Diffstat (limited to 'core/java/android/hardware')
-rw-r--r--core/java/android/hardware/camera2/impl/CameraDeviceImpl.java9
1 files changed, 7 insertions, 2 deletions
diff --git a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
index ed167f0..8512b23 100644
--- a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
+++ b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
@@ -52,6 +52,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -79,7 +80,7 @@ public class CameraDeviceImpl extends CameraDevice {
private volatile StateCallbackKK mSessionStateCallback;
private final Handler mDeviceHandler;
- private volatile boolean mClosing = false;
+ private final AtomicBoolean mClosing = new AtomicBoolean();
private boolean mInError = false;
private boolean mIdle = true;
@@ -906,6 +907,10 @@ public class CameraDeviceImpl extends CameraDevice {
@Override
public void close() {
synchronized (mInterfaceLock) {
+ if (mClosing.getAndSet(true)) {
+ return;
+ }
+
try {
if (mRemoteDevice != null) {
mRemoteDevice.disconnect();
@@ -1917,7 +1922,7 @@ public class CameraDeviceImpl extends CameraDevice {
/** Whether the camera device has started to close (may not yet have finished) */
private boolean isClosed() {
- return mClosing;
+ return mClosing.get();
}
private CameraCharacteristics getCharacteristics() {