From a6081104c28107943d468aa8f05e331c6ac66df8 Mon Sep 17 00:00:00 2001 From: likaid Date: Mon, 9 Mar 2015 17:21:36 +0800 Subject: SnapdragonCamera: Avoid shutter button double clicked in short time The camera shutter button may be double clicked very quickly during monkey test, which caused take_pic was dispatched twice. Add flag to avoid multi thread invoke in onShutterButtonClick. Change-Id: I7fb1f266f1c557327f0e5578f2c25e20092f0cf4 CRs-Fixed: 791045 --- src/com/android/camera/PhotoModule.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/com/android/camera/PhotoModule.java') diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java index 3d6481a29..a9c3aaeaf 100644 --- a/src/com/android/camera/PhotoModule.java +++ b/src/com/android/camera/PhotoModule.java @@ -253,6 +253,8 @@ public class PhotoModule private byte[] mLastJpegData; private int mLastJpegOrientation = 0; + private boolean mShutterPressing = false; + private Runnable mDoSnapRunnable = new Runnable() { @Override public void run() { @@ -2043,14 +2045,16 @@ public class PhotoModule @Override public void onShutterButtonClick() { - if (mPaused || mUI.collapseCameraControls() + if (mPaused || mShutterPressing + || mUI.collapseCameraControls() || (mCameraState == SWITCHING_CAMERA) || (mCameraState == PREVIEW_STOPPED)) return; - + mShutterPressing = true; // Do not take the picture if there is not enough storage. if (mActivity.getStorageSpaceBytes() <= Storage.LOW_STORAGE_THRESHOLD_BYTES) { Log.i(TAG, "Not enough space or storage not ready. remaining=" + mActivity.getStorageSpaceBytes()); + mShutterPressing = false; return; } Log.v(TAG, "onShutterButtonClick: mCameraState=" + mCameraState); @@ -2078,6 +2082,7 @@ public class PhotoModule || mCameraState == SNAPSHOT_IN_PROGRESS) && !mIsImageCaptureIntent) { mSnapshotOnIdle = true; + mShutterPressing = false; return; } @@ -2103,6 +2108,7 @@ public class PhotoModule mSnapshotOnIdle = false; mFocusManager.doSnap(); } + mShutterPressing = false; } @Override -- cgit v1.2.3