diff options
author | John Reck <jreck@google.com> | 2015-07-21 21:04:45 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-07-21 21:04:45 +0000 |
commit | 9317d0b9904573bdb0d815ec563dd263447f11db (patch) | |
tree | ebc8fe43d6981e62b16e6640343b5ed74022c26c /libs/hwui/renderthread/CanvasContext.cpp | |
parent | cf6500b9bae461107d5c0c58de511df907d19fb3 (diff) | |
parent | 1fddd3efa9ac10e794d7bdf457b7b52c7e4614f7 (diff) | |
download | frameworks_base-9317d0b9904573bdb0d815ec563dd263447f11db.zip frameworks_base-9317d0b9904573bdb0d815ec563dd263447f11db.tar.gz frameworks_base-9317d0b9904573bdb0d815ec563dd263447f11db.tar.bz2 |
am 1fddd3ef: Merge "Mark isInUse per-window" into mnc-dev
* commit '1fddd3efa9ac10e794d7bdf457b7b52c7e4614f7':
Mark isInUse per-window
Diffstat (limited to 'libs/hwui/renderthread/CanvasContext.cpp')
-rw-r--r-- | libs/hwui/renderthread/CanvasContext.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp index 09f93b8..e472e93 100644 --- a/libs/hwui/renderthread/CanvasContext.cpp +++ b/libs/hwui/renderthread/CanvasContext.cpp @@ -178,16 +178,13 @@ void CanvasContext::prepareTree(TreeInfo& info, int64_t* uiFrameInfo, int64_t sy info.damageAccumulator = &mDamageAccumulator; info.renderer = mCanvas; - if (mPrefetechedLayers.size() && info.mode == TreeInfo::MODE_FULL) { - info.canvasContext = this; - } + info.canvasContext = this; + mAnimationContext->startFrame(info.mode); mRootRenderNode->prepareTree(info); mAnimationContext->runRemainingAnimations(info); - if (info.canvasContext) { - freePrefetechedLayers(); - } + freePrefetechedLayers(); if (CC_UNLIKELY(!mNativeWindow.get())) { mCurrentFrameInfo->addFlag(FrameInfoFlags::SkippedFrame); @@ -369,7 +366,11 @@ void CanvasContext::destroyHardwareResources() { if (mEglManager.hasEglContext()) { freePrefetechedLayers(); mRootRenderNode->destroyHardwareResources(); - Caches::getInstance().flush(Caches::kFlushMode_Layers); + Caches& caches = Caches::getInstance(); + // Make sure to release all the textures we were owning as there won't + // be another draw + caches.textureCache.resetMarkInUse(this); + caches.flush(Caches::kFlushMode_Layers); } } |