diff options
author | Igor Murashkin <iam@google.com> | 2013-05-02 14:59:28 -0700 |
---|---|---|
committer | Igor Murashkin <iam@google.com> | 2013-05-02 14:59:28 -0700 |
commit | 073f8570d8404b6d1ea3a1bd34954c6332ba991a (patch) | |
tree | ed4818fb04fa590ec8450d542977690158fd7f8b /services | |
parent | 61675c0a7b5d88d5f525b1a1926fab6a7b2c7904 (diff) | |
download | frameworks_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.cpp | 16 |
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; + } } } |