diff options
Diffstat (limited to 'services/camera')
5 files changed, 21 insertions, 2 deletions
diff --git a/services/camera/libcameraservice/api1/Camera2Client.cpp b/services/camera/libcameraservice/api1/Camera2Client.cpp index 8075515..9721e13 100644 --- a/services/camera/libcameraservice/api1/Camera2Client.cpp +++ b/services/camera/libcameraservice/api1/Camera2Client.cpp @@ -825,7 +825,6 @@ status_t Camera2Client::startPreviewL(Parameters ¶ms, bool restart) { } outputStreams.push(getZslStreamId()); } else { - mZslProcessor->clearZslQueue(); mZslProcessor->deleteStream(); } diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp index 9d36bfa..44e8822 100644 --- a/services/camera/libcameraservice/device3/Camera3Device.cpp +++ b/services/camera/libcameraservice/device3/Camera3Device.cpp @@ -1497,6 +1497,9 @@ status_t Camera3Device::configureStreamsLocked() { ALOGV("%s: Camera %d: Stream configuration complete", __FUNCTION__, mId); + // tear down the deleted streams after configure streams. + mDeletedStreams.clear(); + return OK; } diff --git a/services/camera/libcameraservice/device3/Camera3OutputStream.h b/services/camera/libcameraservice/device3/Camera3OutputStream.h index 6cbb9f4..f963326 100644 --- a/services/camera/libcameraservice/device3/Camera3OutputStream.h +++ b/services/camera/libcameraservice/device3/Camera3OutputStream.h @@ -76,6 +76,8 @@ class Camera3OutputStream : /*out*/ sp<Fence> *releaseFenceOut); + virtual status_t disconnectLocked(); + sp<ANativeWindow> mConsumer; private: int mTransform; @@ -91,7 +93,6 @@ class Camera3OutputStream : nsecs_t timestamp); virtual status_t configureQueueLocked(); - virtual status_t disconnectLocked(); virtual status_t getEndpointUsage(uint32_t *usage); diff --git a/services/camera/libcameraservice/device3/Camera3ZslStream.cpp b/services/camera/libcameraservice/device3/Camera3ZslStream.cpp index 6c298f9..92bf81b 100644 --- a/services/camera/libcameraservice/device3/Camera3ZslStream.cpp +++ b/services/camera/libcameraservice/device3/Camera3ZslStream.cpp @@ -318,11 +318,21 @@ status_t Camera3ZslStream::enqueueInputBufferByTimestamp( status_t Camera3ZslStream::clearInputRingBuffer() { Mutex::Autolock l(mLock); + return clearInputRingBufferLocked(); +} + +status_t Camera3ZslStream::clearInputRingBufferLocked() { mInputBufferQueue.clear(); return mProducer->clear(); } +status_t Camera3ZslStream::disconnectLocked() { + clearInputRingBufferLocked(); + + return Camera3OutputStream::disconnectLocked(); +} + status_t Camera3ZslStream::setTransform(int /*transform*/) { ALOGV("%s: Not implemented", __FUNCTION__); return INVALID_OPERATION; diff --git a/services/camera/libcameraservice/device3/Camera3ZslStream.h b/services/camera/libcameraservice/device3/Camera3ZslStream.h index 6721832..d89c38d 100644 --- a/services/camera/libcameraservice/device3/Camera3ZslStream.h +++ b/services/camera/libcameraservice/device3/Camera3ZslStream.h @@ -96,6 +96,12 @@ class Camera3ZslStream : bool output, /*out*/ sp<Fence> *releaseFenceOut); + + // Disconnet the Camera3ZslStream specific bufferQueues. + virtual status_t disconnectLocked(); + + status_t clearInputRingBufferLocked(); + }; // class Camera3ZslStream }; // namespace camera3 |