Mark isInUse per-window
Bug: 22509159
Change-Id: I0ae0f1fa582ee38dcb9f24ca20f0b4d0c57ccb32
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 @@
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 @@
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);
}
}