summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorIgor Murashkin <iam@google.com>2013-05-02 14:59:28 -0700
committerIgor Murashkin <iam@google.com>2013-05-02 14:59:28 -0700
commit073f8570d8404b6d1ea3a1bd34954c6332ba991a (patch)
treeed4818fb04fa590ec8450d542977690158fd7f8b /services
parent61675c0a7b5d88d5f525b1a1926fab6a7b2c7904 (diff)
downloadframeworks_av-073f8570d8404b6d1ea3a1bd34954c6332ba991a.zip
frameworks_av-073f8570d8404b6d1ea3a1bd34954c6332ba991a.tar.gz
frameworks_av-073f8570d8404b6d1ea3a1bd34954c6332ba991a.tar.bz2
camera3: Don't eagerly finish configuring bidi streams more than once
Finishing all stream configuration immediately is good, but when a stream is both input and output it attempted to finish configuring bidi streams twice. Since all ZSL streams are bidi, when we had a ZSL stream active preview would immediately stop working. Bug: 8563838 Change-Id: Iec998f11f6405fc15f3f31bd7cd29f03a7968d14
Diffstat (limited to 'services')
-rw-r--r--services/camera/libcameraservice/Camera3Device.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/services/camera/libcameraservice/Camera3Device.cpp b/services/camera/libcameraservice/Camera3Device.cpp
index 5f87e8b..5e5bfc2 100644
--- a/services/camera/libcameraservice/Camera3Device.cpp
+++ b/services/camera/libcameraservice/Camera3Device.cpp
@@ -1060,7 +1060,7 @@ status_t Camera3Device::configureStreamsLocked() {
// TODO: Try to relax this later back to lazy completion, which should be
// faster
- if (mInputStream != NULL) {
+ if (mInputStream != NULL && mInputStream->isConfiguring()) {
res = mInputStream->finishConfiguration(mHal3Device);
if (res != OK) {
SET_ERR_L("Can't finish configuring input stream %d: %s (%d)",
@@ -1070,11 +1070,15 @@ status_t Camera3Device::configureStreamsLocked() {
}
for (size_t i = 0; i < mOutputStreams.size(); i++) {
- res = mOutputStreams.editValueAt(i)->finishConfiguration(mHal3Device);
- if (res != OK) {
- SET_ERR_L("Can't finish configuring output stream %d: %s (%d)",
- mOutputStreams[i]->getId(), strerror(-res), res);
- return res;
+ sp<Camera3OutputStreamInterface> outputStream =
+ mOutputStreams.editValueAt(i);
+ if (outputStream->isConfiguring()) {
+ res = outputStream->finishConfiguration(mHal3Device);
+ if (res != OK) {
+ SET_ERR_L("Can't finish configuring output stream %d: %s (%d)",
+ outputStream->getId(), strerror(-res), res);
+ return res;
+ }
}
}