diff options
author | John Reck <jreck@google.com> | 2016-06-14 14:58:56 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2016-06-14 14:58:56 +0000 |
commit | 6c3281a7c7a2d57ff8de89dcad1ab62e34bf0d5d (patch) | |
tree | 5a7e2608da4a320b3d177f0907a77a5f1d31afc1 /libs/hwui/renderthread/CanvasContext.cpp | |
parent | 71556ef0e43cf5fc2ef84626c84f1e2caf52b843 (diff) | |
parent | fc4c59a10cfd3cdbecf83657b74fbcedc70d3ada (diff) |
Merge \\"Redraw if dirty during stopped when resumed\\" into nyc-dev am: 5b4ff21a74
am: fc4c59a10c
Change-Id: Id572ab8137655b8f64e563d78897d2461442dd39
Diffstat (limited to 'libs/hwui/renderthread/CanvasContext.cpp')
-rw-r--r-- | libs/hwui/renderthread/CanvasContext.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp index 597c5c56eec2..d4956bed25e8 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))) { |