From 359adca4b7cf734ab9a0d27a005b9f6dfdc0ad8e Mon Sep 17 00:00:00 2001 From: Emilian Peev Date: Wed, 30 Oct 2019 10:12:46 -0700 Subject: [PATCH] Camera: Check consumer interface before disconnecting The internal buffer queue and respective 'mConsumer' may never get initialized in case the connection and/or configuration of client shared output surfaces fails. To avoid possible instabilities check whether the consumer interface is valid before trying to disconnect. Bug: 143506890 Test: atest cts/tests/camera/src/android/hardware/camera2/cts/MultiViewTest.java Change-Id: Ia533233444fd548ddb52f4fde06212a21bc843bc --- .../camera/libcameraservice/device3/Camera3StreamSplitter.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/services/camera/libcameraservice/device3/Camera3StreamSplitter.cpp b/services/camera/libcameraservice/device3/Camera3StreamSplitter.cpp index 84c2ec7544..3089181890 100644 --- a/services/camera/libcameraservice/device3/Camera3StreamSplitter.cpp +++ b/services/camera/libcameraservice/device3/Camera3StreamSplitter.cpp @@ -139,7 +139,9 @@ void Camera3StreamSplitter::disconnect() { mOutputSlots.clear(); mConsumerBufferCount.clear(); - mConsumer->consumerDisconnect(); + if (mConsumer.get() != nullptr) { + mConsumer->consumerDisconnect(); + } if (mBuffers.size() > 0) { SP_LOGW("%zu buffers still being tracked", mBuffers.size());