Loading services/camera/libcameraservice/device3/Camera3Device.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -2226,10 +2226,12 @@ status_t Camera3Device::waitUntilStateThenRelock(bool active, nsecs_t timeout) { mStatusWaiters++; bool signalPipelineDrain = false; if (!active && mUseHalBufManager) { auto streamIds = mOutputStreams.getStreamIds(); if (mStatus == STATUS_ACTIVE) { mRequestThread->signalPipelineDrain(streamIds); signalPipelineDrain = true; } mRequestBufferSM.onWaitUntilIdle(); } Loading Loading @@ -2259,6 +2261,10 @@ status_t Camera3Device::waitUntilStateThenRelock(bool active, nsecs_t timeout) { } } while (!stateSeen); if (signalPipelineDrain) { mRequestThread->resetPipelineDrain(); } mStatusWaiters--; return res; Loading Loading @@ -5884,6 +5890,12 @@ void Camera3Device::RequestThread::signalPipelineDrain(const std::vector<int>& s mStreamIdsToBeDrained = streamIds; } void Camera3Device::RequestThread::resetPipelineDrain() { Mutex::Autolock pl(mPauseLock); mNotifyPipelineDrain = false; mStreamIdsToBeDrained.clear(); } nsecs_t Camera3Device::getExpectedInFlightDuration() { ATRACE_CALL(); Mutex::Autolock al(mInFlightLock); Loading services/camera/libcameraservice/device3/Camera3Device.h +1 −0 Original line number Diff line number Diff line Loading @@ -838,6 +838,7 @@ class Camera3Device : } void signalPipelineDrain(const std::vector<int>& streamIds); void resetPipelineDrain(); protected: Loading Loading
services/camera/libcameraservice/device3/Camera3Device.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -2226,10 +2226,12 @@ status_t Camera3Device::waitUntilStateThenRelock(bool active, nsecs_t timeout) { mStatusWaiters++; bool signalPipelineDrain = false; if (!active && mUseHalBufManager) { auto streamIds = mOutputStreams.getStreamIds(); if (mStatus == STATUS_ACTIVE) { mRequestThread->signalPipelineDrain(streamIds); signalPipelineDrain = true; } mRequestBufferSM.onWaitUntilIdle(); } Loading Loading @@ -2259,6 +2261,10 @@ status_t Camera3Device::waitUntilStateThenRelock(bool active, nsecs_t timeout) { } } while (!stateSeen); if (signalPipelineDrain) { mRequestThread->resetPipelineDrain(); } mStatusWaiters--; return res; Loading Loading @@ -5884,6 +5890,12 @@ void Camera3Device::RequestThread::signalPipelineDrain(const std::vector<int>& s mStreamIdsToBeDrained = streamIds; } void Camera3Device::RequestThread::resetPipelineDrain() { Mutex::Autolock pl(mPauseLock); mNotifyPipelineDrain = false; mStreamIdsToBeDrained.clear(); } nsecs_t Camera3Device::getExpectedInFlightDuration() { ATRACE_CALL(); Mutex::Autolock al(mInFlightLock); Loading
services/camera/libcameraservice/device3/Camera3Device.h +1 −0 Original line number Diff line number Diff line Loading @@ -838,6 +838,7 @@ class Camera3Device : } void signalPipelineDrain(const std::vector<int>& streamIds); void resetPipelineDrain(); protected: Loading