summaryrefslogtreecommitdiffstats
path: root/libs/hwui/renderthread/CanvasContext.cpp
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2015-07-21 21:04:45 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-07-21 21:04:45 +0000
commit9317d0b9904573bdb0d815ec563dd263447f11db (patch)
treeebc8fe43d6981e62b16e6640343b5ed74022c26c /libs/hwui/renderthread/CanvasContext.cpp
parentcf6500b9bae461107d5c0c58de511df907d19fb3 (diff)
parent1fddd3efa9ac10e794d7bdf457b7b52c7e4614f7 (diff)
downloadframeworks_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.cpp15
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);
}
}