diff options
author | John Reck <jreck@google.com> | 2021-02-04 18:29:11 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2021-02-04 18:29:11 +0000 |
commit | 1aee20138c2259ed336e5d950c6d4967a316dea8 (patch) | |
tree | 492ed1c0aafb6a95af48cc2062f9752066cd0d9f /libs/hwui/renderthread/CanvasContext.cpp | |
parent | debc58e074613328bcfdeedf2ae06246fb0c6fa5 (diff) | |
parent | f516e3a36e069e99477c027eda448c3d6121a028 (diff) |
Merge "Fix render_ahead properties" into sc-dev
Diffstat (limited to 'libs/hwui/renderthread/CanvasContext.cpp')
-rw-r--r-- | libs/hwui/renderthread/CanvasContext.cpp | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp index 633f21ceba07..37a6ee71c4a6 100644 --- a/libs/hwui/renderthread/CanvasContext.cpp +++ b/libs/hwui/renderthread/CanvasContext.cpp @@ -157,12 +157,14 @@ static void setBufferCount(ANativeWindow* window) { void CanvasContext::setSurface(ANativeWindow* window, bool enableTimeout) { ATRACE_CALL(); - if (mRenderAheadDepth == 0 && DeviceInfo::get()->getMaxRefreshRate() > 66.6f) { - mFixedRenderAhead = false; - mRenderAheadCapacity = 1; - } else { - mFixedRenderAhead = true; + if (mFixedRenderAhead) { mRenderAheadCapacity = mRenderAheadDepth; + } else { + if (DeviceInfo::get()->getMaxRefreshRate() > 66.6f) { + mRenderAheadCapacity = 1; + } else { + mRenderAheadCapacity = 0; + } } if (window) { @@ -764,11 +766,16 @@ bool CanvasContext::surfaceRequiresRedraw() { } void CanvasContext::setRenderAheadDepth(int renderAhead) { - if (renderAhead > 2 || renderAhead < 0 || mNativeSurface) { + if (renderAhead > 2 || renderAhead < -1 || mNativeSurface) { return; } - mFixedRenderAhead = true; - mRenderAheadDepth = static_cast<uint32_t>(renderAhead); + if (renderAhead == -1) { + mFixedRenderAhead = false; + mRenderAheadDepth = 0; + } else { + mFixedRenderAhead = true; + mRenderAheadDepth = static_cast<uint32_t>(renderAhead); + } } SkRect CanvasContext::computeDirtyRect(const Frame& frame, SkRect* dirty) { |