@@ -30,16 +30,18 @@ FrameTarget::FrameTarget(const std::string& displayLabel)
3030
3131TimePoint FrameTarget::pastVsyncTime (Period minFramePeriod) const {
3232 // TODO(b/267315508): Generalize to N VSYNCs.
33- const int shift = static_cast < int >(targetsVsyncsAhead< 2 >( minFramePeriod) );
33+ const size_t shift = getPresentFenceShift ( minFramePeriod);
3434 return mExpectedPresentTime - Period::fromNs (minFramePeriod.ns () << shift);
3535}
3636
3737FenceTimePtr FrameTarget::presentFenceForPastVsync (Period minFramePeriod) const {
3838 if (FlagManager::getInstance ().allow_n_vsyncs_in_targeter ()) {
3939 return pastVsyncTimePtr ();
4040 }
41- const size_t i = static_cast <size_t >(targetsVsyncsAhead<2 >(minFramePeriod));
42- return mPresentFences [i].fenceTime ;
41+
42+ const size_t shift = getPresentFenceShift (minFramePeriod);
43+ ATRACE_FORMAT (" mPresentFences shift=%zu" , shift);
44+ return mPresentFences [shift].fenceTime ;
4345}
4446
4547bool FrameTarget::wouldPresentEarly (Period minFramePeriod) const {
@@ -151,7 +153,9 @@ FenceTimePtr FrameTargeter::setPresentFence(sp<Fence> presentFence, FenceTimePtr
151153 if (FlagManager::getInstance ().allow_n_vsyncs_in_targeter ()) {
152154 addFence (std::move (presentFence), presentFenceTime, mExpectedPresentTime );
153155 } else {
154- mPresentFences [1 ] = mPresentFences [0 ];
156+ for (size_t i = mPresentFences .size ()-1 ; i >= 1 ; i--) {
157+ mPresentFences [i] = mPresentFences [i-1 ];
158+ }
155159 mPresentFences [0 ] = {std::move (presentFence), presentFenceTime, mExpectedPresentTime };
156160 }
157161 return presentFenceTime;
0 commit comments