Camera: Play shutter sound iff enableShutterSound(true) && ShutterCallback !null

Bug: 7564718
Change-Id: Ie7821cdee57966d88af048759578439a3e6ecb2e
diff --git a/services/camera/libcameraservice/camera2/CaptureSequencer.cpp b/services/camera/libcameraservice/camera2/CaptureSequencer.cpp
index fe4abc0..072453b 100644
--- a/services/camera/libcameraservice/camera2/CaptureSequencer.cpp
+++ b/services/camera/libcameraservice/camera2/CaptureSequencer.cpp
@@ -45,7 +45,8 @@
         mCaptureState(IDLE),
         mTriggerId(0),
         mTimeoutCount(0),
-        mCaptureId(Camera2Client::kCaptureRequestIdStart) {
+        mCaptureId(Camera2Client::kCaptureRequestIdStart),
+        mMsgType(0) {
     ALOGV("%s", __FUNCTION__);
 }
 
@@ -58,7 +59,7 @@
     mZslProcessor = processor;
 }
 
-status_t CaptureSequencer::startCapture() {
+status_t CaptureSequencer::startCapture(int msgType) {
     ALOGV("%s", __FUNCTION__);
     ATRACE_CALL();
     Mutex::Autolock l(mInputMutex);
@@ -67,6 +68,7 @@
         return INVALID_OPERATION;
     }
     if (!mStartCapture) {
+        mMsgType = msgType;
         mStartCapture = true;
         mStartCaptureSignal.signal();
     }
@@ -343,7 +345,7 @@
 
     SharedParameters::Lock l(client->getParameters());
     /* warning: this also locks a SharedCameraClient */
-    shutterNotifyLocked(l.mParameters, client);
+    shutterNotifyLocked(l.mParameters, client, mMsgType);
     mShutterNotified = true;
     mTimeoutCount = kMaxTimeoutsForCaptureEnd;
     return STANDARD_CAPTURE_WAIT;
@@ -495,7 +497,7 @@
     if (mNewFrameReceived && !mShutterNotified) {
         SharedParameters::Lock l(client->getParameters());
         /* warning: this also locks a SharedCameraClient */
-        shutterNotifyLocked(l.mParameters, client);
+        shutterNotifyLocked(l.mParameters, client, mMsgType);
         mShutterNotified = true;
     }
     while (mNewFrameReceived && !mNewCaptureReceived) {
@@ -639,10 +641,12 @@
 }
 
 /*static*/ void CaptureSequencer::shutterNotifyLocked(const Parameters &params,
-            sp<Camera2Client> client) {
+            sp<Camera2Client> client, int msgType) {
     ATRACE_CALL();
 
-    if (params.state == Parameters::STILL_CAPTURE && params.playShutterSound) {
+    if (params.state == Parameters::STILL_CAPTURE
+        && params.playShutterSound
+        && (msgType & CAMERA_MSG_SHUTTER)) {
         client->getCameraService()->playSound(CameraService::SOUND_SHUTTER);
     }