diff options
author | Ruben Brunk <rubenbrunk@google.com> | 2015-06-12 00:25:46 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-06-12 00:25:48 +0000 |
commit | 25f3a7d19b2fb9b33cb83d3d8f90c724cd26c9c9 (patch) | |
tree | c7ee934c222eed7da3378dff23d494639502bf3e /core/java/android/hardware | |
parent | c37c7d9dbe38f7716c5d19ff13a0055e0bce7800 (diff) | |
parent | 0953b6461aed9770e0e537b40988e97582d74dbd (diff) | |
download | frameworks_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.java | 9 |
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() { |