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);