Explicitly destroy Layer in DeferredLayerUpdater on destroyHardwareResources()
Change-Id: I0987104eabda9a2a302b9e765213aad48f93aea4
Test: refactoring CL. Existing tests still pass
bug:33753499
diff --git a/libs/hwui/renderstate/RenderState.h b/libs/hwui/renderstate/RenderState.h
index d183a15..a44fa9d 100644
--- a/libs/hwui/renderstate/RenderState.h
+++ b/libs/hwui/renderstate/RenderState.h
@@ -42,6 +42,7 @@
class Caches;
class Layer;
+class DeferredLayerUpdater;
namespace renderthread {
class CanvasContext;
@@ -90,6 +91,16 @@
mRegisteredContexts.erase(context);
}
+ void registerDeferredLayerUpdater(DeferredLayerUpdater* layerUpdater) {
+ mActiveLayerUpdaters.insert(layerUpdater);
+ }
+
+ void unregisterDeferredLayerUpdater(DeferredLayerUpdater* layerUpdater) {
+ mActiveLayerUpdaters.erase(layerUpdater);
+ }
+
+ void destroyLayersInUpdater();
+
// TODO: This system is a little clunky feeling, this could use some
// more thinking...
void postDecStrong(VirtualLightRefBase* object);
@@ -126,6 +137,7 @@
OffscreenBufferPool mLayerPool;
std::set<Layer*> mActiveLayers;
+ std::set<DeferredLayerUpdater*> mActiveLayerUpdaters;
std::set<renderthread::CanvasContext*> mRegisteredContexts;
GLsizei mViewportWidth;