Clean up deferredLayers only onGpuContextDestroyed.
Test: manual
bug:34919311
Change-Id: I5488b0845ec3922424f5893943e4f42675dfc9fd
diff --git a/libs/hwui/renderstate/RenderState.cpp b/libs/hwui/renderstate/RenderState.cpp
index 0d567f7..7dfc2ee 100644
--- a/libs/hwui/renderstate/RenderState.cpp
+++ b/libs/hwui/renderstate/RenderState.cpp
@@ -80,6 +80,7 @@
delete mStencil;
mStencil = nullptr;
+ destroyLayersInUpdater();
GpuMemoryTracker::onGpuContextDestroyed();
}
diff --git a/libs/hwui/renderstate/RenderState.h b/libs/hwui/renderstate/RenderState.h
index a44fa9d..f78bf7a 100644
--- a/libs/hwui/renderstate/RenderState.h
+++ b/libs/hwui/renderstate/RenderState.h
@@ -99,8 +99,6 @@
mActiveLayerUpdaters.erase(layerUpdater);
}
- void destroyLayersInUpdater();
-
// TODO: This system is a little clunky feeling, this could use some
// more thinking...
void postDecStrong(VirtualLightRefBase* object);
@@ -121,6 +119,7 @@
private:
void interruptForFunctorInvoke();
void resumeFromFunctorInvoke();
+ void destroyLayersInUpdater();
explicit RenderState(renderthread::RenderThread& thread);
~RenderState();
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp
index 5a7de1d..a53e5e0 100644
--- a/libs/hwui/renderthread/CanvasContext.cpp
+++ b/libs/hwui/renderthread/CanvasContext.cpp
@@ -570,7 +570,6 @@
}
mRenderPipeline->onDestroyHardwareResources();
}
- mRenderThread.renderState().destroyLayersInUpdater();
}
void CanvasContext::trimMemory(RenderThread& thread, int level) {