diff options
Diffstat (limited to 'libs/hwui/renderthread/CanvasContext.cpp')
-rw-r--r-- | libs/hwui/renderthread/CanvasContext.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp index 820789dd055d..f4d8051466f0 100644 --- a/libs/hwui/renderthread/CanvasContext.cpp +++ b/libs/hwui/renderthread/CanvasContext.cpp @@ -355,7 +355,14 @@ void CanvasContext::prepareTree(TreeInfo& info, int64_t* uiFrameInfo, int64_t sy // Already drew for this vsync pulse, UI draw request missed // the deadline for RT animations info.out.canDrawThisFrame = false; - } else if (vsyncDelta >= mRenderThread.timeLord().frameIntervalNanos() * 3 || + } + /* This logic exists to try and recover from a display latch miss, which essentially + * results in the bufferqueue being double-buffered instead of triple-buffered. + * SurfaceFlinger itself now tries to handle & recover from this situation, so this + * logic should no longer be necessary. As it's occasionally triggering when + * undesired disable it. + * TODO: Remove this entirely if the results are solid. + else if (vsyncDelta >= mRenderThread.timeLord().frameIntervalNanos() * 3 || (latestVsync - mLastDropVsync) < 500_ms) { // It's been several frame intervals, assume the buffer queue is fine // or the last drop was too recent @@ -367,6 +374,7 @@ void CanvasContext::prepareTree(TreeInfo& info, int64_t* uiFrameInfo, int64_t sy mLastDropVsync = mRenderThread.timeLord().latestVsync(); } } + */ } else { info.out.canDrawThisFrame = true; } |