Track buildLayer calls, destroy if unused
Bug: 17208461
Change-Id: Ibdb104a493285d77a6891c5e74e38a52c7014da9
diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp
index a79875e..cbb794e 100644
--- a/libs/hwui/RenderNode.cpp
+++ b/libs/hwui/RenderNode.cpp
@@ -34,6 +34,7 @@
#include "LayerRenderer.h"
#include "OpenGLRenderer.h"
#include "utils/MathUtils.h"
+#include "renderthread/CanvasContext.h"
namespace android {
namespace uirenderer {
@@ -208,6 +209,13 @@
if (info.renderer && mLayer->deferredUpdateScheduled) {
info.renderer->pushLayerUpdate(mLayer);
}
+
+ if (CC_UNLIKELY(info.canvasContext)) {
+ // If canvasContext is not null that means there are prefetched layers
+ // that need to be accounted for. That might be us, so tell CanvasContext
+ // that this layer is in the tree and should not be destroyed.
+ info.canvasContext->markLayerInUse(this);
+ }
}
void RenderNode::prepareTreeImpl(TreeInfo& info) {