summaryrefslogtreecommitdiff
path: root/libs/hwui/renderthread/CanvasContext.cpp
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2016-06-14 15:04:35 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-06-14 15:04:35 +0000
commit21a7b6e8e36dc9d4a163d809f9cdccb867e9b19c (patch)
treeec653feea2cc63af10b70a0f47aa27cd08dc3497 /libs/hwui/renderthread/CanvasContext.cpp
parent0239f4d1c21a8aeb56e6ad8e22222274f83ff1b4 (diff)
parent6c3281a7c7a2d57ff8de89dcad1ab62e34bf0d5d (diff)
Merge \\\"Redraw if dirty during stopped when resumed\\\" into nyc-dev am: 5b4ff21a74 am: fc4c59a10c
am: 6c3281a7c7 Change-Id: I67192e2450293a6520a30ed78c8381b89558841b
Diffstat (limited to 'libs/hwui/renderthread/CanvasContext.cpp')
-rw-r--r--libs/hwui/renderthread/CanvasContext.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp
index ac2e08c33850..edf214bd1a9d 100644
--- a/libs/hwui/renderthread/CanvasContext.cpp
+++ b/libs/hwui/renderthread/CanvasContext.cpp
@@ -149,6 +149,8 @@ void CanvasContext::setStopped(bool stopped) {
if (mEglManager.isCurrent(mEglSurface)) {
mEglManager.makeCurrent(EGL_NO_SURFACE);
}
+ } else if (mIsDirty && hasSurface()) {
+ mRenderThread.postFrameCallback(this);
}
}
}
@@ -231,6 +233,8 @@ void CanvasContext::prepareTree(TreeInfo& info, int64_t* uiFrameInfo,
freePrefetchedLayers(info.observer);
GL_CHECKPOINT(MODERATE);
+ mIsDirty = true;
+
if (CC_UNLIKELY(!mNativeSurface.get())) {
mCurrentFrameInfo->addFlag(FrameInfoFlags::SkippedFrame);
info.out.canDrawThisFrame = false;
@@ -504,6 +508,7 @@ void CanvasContext::draw() {
// Even if we decided to cancel the frame, from the perspective of jank
// metrics the frame was swapped at this point
mCurrentFrameInfo->markSwapBuffers();
+ mIsDirty = false;
if (drew || mEglManager.damageRequiresSwap()) {
if (CC_UNLIKELY(!mEglManager.swapBuffers(frame, screenDirty))) {