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
diff --git a/services/surfaceflinger/BufferStateLayer.cpp b/services/surfaceflinger/BufferStateLayer.cpp
index 0f26211..c2ec9bf 100644
--- a/services/surfaceflinger/BufferStateLayer.cpp
+++ b/services/surfaceflinger/BufferStateLayer.cpp
@@ -217,10 +217,10 @@
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 @@
return true;
}
- return mDesiredPresentTime <= expectedPresentTime;
+ return mCurrentState.desiredPresentTime <= expectedPresentTime;
}
nsecs_t BufferStateLayer::getDesiredPresentTime() {
- return mDesiredPresentTime;
+ return getDrawingState().desiredPresentTime;
}
std::shared_ptr<FenceTime> BufferStateLayer::getCurrentFenceTime() const {