From a4833ace01311c64b91f8ff0a2b33d1976af26d2 Mon Sep 17 00:00:00 2001 From: Emilian Peev Date: Mon, 23 Jul 2018 11:41:44 +0100 Subject: [PATCH] Camera: Flush in-flight requests during device detach Improve performance during device detach by flushing all camera requests. Bug: 80402005 Test: Camera CTS Change-Id: I3a6864575b1533c77b5478c2390a908892700f6e Merged-In: I3a6864575b1533c77b5478c2390a908892700f6e --- .../camera/libcameraservice/api2/CameraDeviceClient.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/services/camera/libcameraservice/api2/CameraDeviceClient.cpp b/services/camera/libcameraservice/api2/CameraDeviceClient.cpp index 98d053448e..18788f2a78 100644 --- a/services/camera/libcameraservice/api2/CameraDeviceClient.cpp +++ b/services/camera/libcameraservice/api2/CameraDeviceClient.cpp @@ -1677,9 +1677,12 @@ void CameraDeviceClient::detachDevice() { // WORKAROUND: HAL refuses to disconnect while there's streams in flight { - mDevice->clearStreamingRequest(); - + int64_t lastFrameNumber; status_t code; + if ((code = mDevice->flush(&lastFrameNumber)) != OK) { + ALOGE("%s: flush failed with code 0x%x", __FUNCTION__, code); + } + if ((code = mDevice->waitUntilDrained()) != OK) { ALOGE("%s: waitUntilDrained failed with code 0x%x", __FUNCTION__, code);