From fa67b55312a1dfbc157f3bf9b0f5cf98d47402cb Mon Sep 17 00:00:00 2001 From: chaviw Date: Mon, 12 Aug 2019 16:51:55 -0700 Subject: Moved desiredPresentTime for BLAST into State Currently mDesiredPresentTime was being accessed by both main thread and binder thread. Moved desiredPresentTime into State struct so it can be accessed by the binder thread with current state and by the main thread with drawing state. Test: BLAST continues to work Change-Id: Ib32f4fb8963549e57c15fa2eb934b30fffe67171 --- services/surfaceflinger/BufferStateLayer.cpp | 8 ++++---- services/surfaceflinger/BufferStateLayer.h | 2 -- services/surfaceflinger/Layer.h | 1 + 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/services/surfaceflinger/BufferStateLayer.cpp b/services/surfaceflinger/BufferStateLayer.cpp index 0f262116e2..c2ec9bf747 100644 --- a/services/surfaceflinger/BufferStateLayer.cpp +++ b/services/surfaceflinger/BufferStateLayer.cpp @@ -217,10 +217,10 @@ bool BufferStateLayer::setBuffer(const sp& buffer, nsecs_t postTi setTransactionFlags(eTransactionNeeded); mFlinger->mTimeStats->setPostTime(getSequence(), mFrameNumber, getName().c_str(), postTime); - mDesiredPresentTime = desiredPresentTime; + mCurrentState.desiredPresentTime = desiredPresentTime; if (mFlinger->mUseSmart90ForVideo) { - const nsecs_t presentTime = (mDesiredPresentTime == -1) ? 0 : mDesiredPresentTime; + const nsecs_t presentTime = (desiredPresentTime == -1) ? 0 : desiredPresentTime; mFlinger->mScheduler->addLayerPresentTimeAndHDR(mSchedulerLayerHandle, presentTime, mCurrentState.hdrMetadata.validTypes != 0); } @@ -374,11 +374,11 @@ bool BufferStateLayer::framePresentTimeIsCurrent(nsecs_t expectedPresentTime) co return true; } - return mDesiredPresentTime <= expectedPresentTime; + return mCurrentState.desiredPresentTime <= expectedPresentTime; } nsecs_t BufferStateLayer::getDesiredPresentTime() { - return mDesiredPresentTime; + return getDrawingState().desiredPresentTime; } std::shared_ptr BufferStateLayer::getCurrentFenceTime() const { diff --git a/services/surfaceflinger/BufferStateLayer.h b/services/surfaceflinger/BufferStateLayer.h index 5e5b9b0096..a17fcfde6b 100644 --- a/services/surfaceflinger/BufferStateLayer.h +++ b/services/surfaceflinger/BufferStateLayer.h @@ -160,8 +160,6 @@ private: bool mReleasePreviousBuffer = false; nsecs_t mCallbackHandleAcquireTime = -1; - nsecs_t mDesiredPresentTime = -1; - // TODO(marissaw): support sticky transform for LEGACY camera mode class HwcSlotGenerator : public ClientCache::ErasedRecipient { diff --git a/services/surfaceflinger/Layer.h b/services/surfaceflinger/Layer.h index 953f25ddf1..220465a823 100644 --- a/services/surfaceflinger/Layer.h +++ b/services/surfaceflinger/Layer.h @@ -217,6 +217,7 @@ public: // recent callback handle. std::deque> callbackHandles; bool colorSpaceAgnostic; + nsecs_t desiredPresentTime = -1; }; explicit Layer(const LayerCreationArgs& args); -- cgit v1.2.3-59-g8ed1b