summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Murashkin <iam@google.com>2012-11-26 10:50:55 -0800
committerIgor Murashkin <iam@google.com>2012-11-26 16:01:48 -0800
commitaa9e3e01b86bd9bfb5ac36c0f360d5fe478cbb2d (patch)
tree57a32f0f9b4c601704d9e072ece1f5d05d706f1a
parentd983364b3655a547b55bb11dbe148103198c011d (diff)
Camera: Play shutter sound iff enableShutterSound(true) && ShutterCallback !null
Bug: 7564718 Change-Id: Ie7821cdee57966d88af048759578439a3e6ecb2e
-rw-r--r--services/camera/libcameraservice/Camera2Client.cpp2
-rw-r--r--services/camera/libcameraservice/camera2/CaptureSequencer.cpp16
-rw-r--r--services/camera/libcameraservice/camera2/CaptureSequencer.h5
3 files changed, 14 insertions, 9 deletions
diff --git a/services/camera/libcameraservice/Camera2Client.cpp b/services/camera/libcameraservice/Camera2Client.cpp
index e59a2409..0f1e6506 100644
--- a/services/camera/libcameraservice/Camera2Client.cpp
+++ b/services/camera/libcameraservice/Camera2Client.cpp
@@ -1111,7 +1111,7 @@ status_t Camera2Client::takePicture(int msgType) {
// Need HAL to have correct settings before (possibly) triggering precapture
syncWithDevice();
- res = mCaptureSequencer->startCapture();
+ res = mCaptureSequencer->startCapture(msgType);
if (res != OK) {
ALOGE("%s: Camera %d: Unable to start capture: %s (%d)",
__FUNCTION__, mCameraId, strerror(-res), res);
diff --git a/services/camera/libcameraservice/camera2/CaptureSequencer.cpp b/services/camera/libcameraservice/camera2/CaptureSequencer.cpp
index fe4abc0e..072453b0 100644
--- a/services/camera/libcameraservice/camera2/CaptureSequencer.cpp
+++ b/services/camera/libcameraservice/camera2/CaptureSequencer.cpp
@@ -45,7 +45,8 @@ CaptureSequencer::CaptureSequencer(wp<Camera2Client> client):
mCaptureState(IDLE),
mTriggerId(0),
mTimeoutCount(0),
- mCaptureId(Camera2Client::kCaptureRequestIdStart) {
+ mCaptureId(Camera2Client::kCaptureRequestIdStart),
+ mMsgType(0) {
ALOGV("%s", __FUNCTION__);
}
@@ -58,7 +59,7 @@ void CaptureSequencer::setZslProcessor(wp<ZslProcessor> processor) {
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 @@ status_t CaptureSequencer::startCapture() {
return INVALID_OPERATION;
}
if (!mStartCapture) {
+ mMsgType = msgType;
mStartCapture = true;
mStartCaptureSignal.signal();
}
@@ -343,7 +345,7 @@ CaptureSequencer::CaptureState CaptureSequencer::manageZslStart(
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 @@ CaptureSequencer::CaptureState CaptureSequencer::manageStandardCaptureWait(
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 @@ status_t CaptureSequencer::updateCaptureRequest(const Parameters &params,
}
/*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);
}
diff --git a/services/camera/libcameraservice/camera2/CaptureSequencer.h b/services/camera/libcameraservice/camera2/CaptureSequencer.h
index 4cde9c83..c42df053 100644
--- a/services/camera/libcameraservice/camera2/CaptureSequencer.h
+++ b/services/camera/libcameraservice/camera2/CaptureSequencer.h
@@ -51,7 +51,7 @@ class CaptureSequencer:
void setZslProcessor(wp<ZslProcessor> processor);
// Begin still image capture
- status_t startCapture();
+ status_t startCapture(int msgType);
// Wait until current image capture completes; returns immediately if no
// capture is active. Returns TIMED_OUT if capture does not complete during
@@ -138,6 +138,7 @@ class CaptureSequencer:
bool mAeInPrecapture;
int32_t mCaptureId;
+ int mMsgType;
// Main internal methods
@@ -167,7 +168,7 @@ class CaptureSequencer:
// Emit Shutter/Raw callback to java, and maybe play a shutter sound
static void shutterNotifyLocked(const Parameters &params,
- sp<Camera2Client> client);
+ sp<Camera2Client> client, int msgType);
};
}; // namespace camera2