summaryrefslogtreecommitdiffstats
path: root/services/camera
diff options
context:
space:
mode:
Diffstat (limited to 'services/camera')
-rw-r--r--services/camera/libcameraservice/api1/Camera2Client.cpp1
-rw-r--r--services/camera/libcameraservice/device3/Camera3Device.cpp3
-rw-r--r--services/camera/libcameraservice/device3/Camera3OutputStream.h3
-rw-r--r--services/camera/libcameraservice/device3/Camera3ZslStream.cpp10
-rw-r--r--services/camera/libcameraservice/device3/Camera3ZslStream.h6
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 &params, 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