From cd438ce7c0379a84d8f453c5bf5e458a0bb69dd9 Mon Sep 17 00:00:00 2001 From: Danny Baumann Date: Fri, 25 Mar 2016 13:02:27 +0100 Subject: Protect against multiple shutter callbacks per frame in longshot mode. Some devices send multiple shutter callbacks for one captured frame in longshot mode. As this causes mismatch between the calculated number of captured frames and the calculated number of JPEGs received for those, which in turn leads to longshot mode never being ended properly, protect against that scenario by discarding all but the first callback. Change-Id: I0c3a270f664a0cd16354fb0a13c5941a52001650 --- src/com/android/camera/PhotoModule.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java index e46c323da..ab0dd83f0 100755 --- a/src/com/android/camera/PhotoModule.java +++ b/src/com/android/camera/PhotoModule.java @@ -1060,6 +1060,11 @@ public class PhotoModule private final class LongshotShutterCallback implements CameraShutterCallback { + private int mExpectedLongshotSnapNum; + + public LongshotShutterCallback() { + mExpectedLongshotSnapNum = mLongshotSnapNum; + } @Override public void onShutter(CameraProxy camera) { @@ -1067,6 +1072,9 @@ public class PhotoModule mShutterLag = mShutterCallbackTime - mCaptureStartTime; Log.e(TAG, "[KPI Perf] PROFILE_SHUTTER_LAG mShutterLag = " + mShutterLag + "ms"); synchronized(mCameraDevice) { + if (mExpectedLongshotSnapNum != mLongshotSnapNum) { + return; + } if (++mLongshotSnapNum >= mLongShotMaxSnap && (mLongShotMaxSnap != -1)) { -- cgit v1.2.3