camera3: Don't try to disconnect stream native windows more than once
This fixes the multiple-disconnect-from-BufferQueue bug.
(In logs)
BufferQueue: [SurfaceView] disconnect: connected to another api (cur=0, req=4)
Bug: 9114681
Change-Id: I21ae1c5bd993701eea13648aa9994979a24eb210
diff --git a/services/camera/libcameraservice/camera3/Camera3Stream.cpp b/services/camera/libcameraservice/camera3/Camera3Stream.cpp
index 9c9c258..f05658a 100644
--- a/services/camera/libcameraservice/camera3/Camera3Stream.cpp
+++ b/services/camera/libcameraservice/camera3/Camera3Stream.cpp
@@ -258,7 +258,15 @@
status_t Camera3Stream::disconnect() {
ATRACE_CALL();
Mutex::Autolock l(mLock);
- return disconnectLocked();
+ ALOGV("%s: Stream %d: Disconnecting...", __FUNCTION__, mId);
+ status_t res = disconnectLocked();
+
+ if (res == -ENOTCONN) {
+ // "Already disconnected" -- not an error
+ return OK;
+ } else {
+ return res;
+ }
}
status_t Camera3Stream::registerBuffersLocked(camera3_device *hal3Device) {