diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp index 65dd014f73..923d17a281 100644 --- a/services/camera/libcameraservice/device3/Camera3Device.cpp +++ b/services/camera/libcameraservice/device3/Camera3Device.cpp @@ -4562,7 +4562,7 @@ void Camera3Device::HalInterface::signalPipelineDrain(const std::vector& st return; } - auto err = mHidlSession_3_5->signalStreamFlush(streamIds, mNextStreamConfigCounter); + auto err = mHidlSession_3_5->signalStreamFlush(streamIds, mNextStreamConfigCounter - 1); if (!err.isOk()) { ALOGE("%s: Transaction error: %s", __FUNCTION__, err.description().c_str()); return; @@ -5894,16 +5894,16 @@ sp if (mPaused == false) { ALOGV("%s: RequestThread: Going idle", __FUNCTION__); mPaused = true; - // Let the tracker know - sp statusTracker = mStatusTracker.promote(); - if (statusTracker != 0) { - statusTracker->markComponentIdle(mStatusId, Fence::NO_FENCE); - } if (mNotifyPipelineDrain) { mInterface->signalPipelineDrain(mStreamIdsToBeDrained); mNotifyPipelineDrain = false; mStreamIdsToBeDrained.clear(); } + // Let the tracker know + sp statusTracker = mStatusTracker.promote(); + if (statusTracker != 0) { + statusTracker->markComponentIdle(mStatusId, Fence::NO_FENCE); + } sp parent = mParent.promote(); if (parent != nullptr) { parent->mRequestBufferSM.onRequestThreadPaused(); @@ -5987,16 +5987,16 @@ bool Camera3Device::RequestThread::waitIfPaused() { if (mPaused == false) { mPaused = true; ALOGV("%s: RequestThread: Paused", __FUNCTION__); - // Let the tracker know - sp statusTracker = mStatusTracker.promote(); - if (statusTracker != 0) { - statusTracker->markComponentIdle(mStatusId, Fence::NO_FENCE); - } if (mNotifyPipelineDrain) { mInterface->signalPipelineDrain(mStreamIdsToBeDrained); mNotifyPipelineDrain = false; mStreamIdsToBeDrained.clear(); } + // Let the tracker know + sp statusTracker = mStatusTracker.promote(); + if (statusTracker != 0) { + statusTracker->markComponentIdle(mStatusId, Fence::NO_FENCE); + } sp parent = mParent.promote(); if (parent != nullptr) { parent->mRequestBufferSM.onRequestThreadPaused();