diff options
Diffstat (limited to 'libs/hwui/renderthread')
| -rw-r--r-- | libs/hwui/renderthread/CanvasContext.cpp | 3 | ||||
| -rw-r--r-- | libs/hwui/renderthread/CanvasContext.h | 4 | ||||
| -rw-r--r-- | libs/hwui/renderthread/RenderThread.h | 1 |
3 files changed, 8 insertions, 0 deletions
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp index 428e426..4129a89 100644 --- a/libs/hwui/renderthread/CanvasContext.cpp +++ b/libs/hwui/renderthread/CanvasContext.cpp @@ -48,11 +48,13 @@ CanvasContext::CanvasContext(RenderThread& thread, bool translucent, , mHaveNewSurface(false) , mRootRenderNode(rootRenderNode) { mAnimationContext = contextFactory->createAnimationContext(mRenderThread.timeLord()); + mRenderThread.renderState().registerCanvasContext(this); } CanvasContext::~CanvasContext() { destroy(); delete mAnimationContext; + mRenderThread.renderState().unregisterCanvasContext(this); } void CanvasContext::destroy() { @@ -299,6 +301,7 @@ void CanvasContext::buildLayer(RenderNode* node) { // purposes when the frame is actually drawn node->setPropertyFieldsDirty(RenderNode::GENERIC); + mCanvas->markLayersAsBuildLayers(); mCanvas->flushLayerUpdates(); node->incStrong(0); diff --git a/libs/hwui/renderthread/CanvasContext.h b/libs/hwui/renderthread/CanvasContext.h index 5984fd0..2460f6b 100644 --- a/libs/hwui/renderthread/CanvasContext.h +++ b/libs/hwui/renderthread/CanvasContext.h @@ -42,6 +42,7 @@ class DeferredLayerUpdater; class OpenGLRenderer; class Rect; class Layer; +class RenderState; namespace renderthread { @@ -95,6 +96,9 @@ public: private: friend class RegisterFrameCallbackTask; + // TODO: Replace with something better for layer & other GL object + // lifecycle tracking + friend class android::uirenderer::RenderState; void setSurface(ANativeWindow* window); void swapBuffers(); diff --git a/libs/hwui/renderthread/RenderThread.h b/libs/hwui/renderthread/RenderThread.h index 0b91e9d..c461f3a 100644 --- a/libs/hwui/renderthread/RenderThread.h +++ b/libs/hwui/renderthread/RenderThread.h @@ -40,6 +40,7 @@ class RenderState; namespace renderthread { +class CanvasContext; class DispatchFrameCallbacks; class EglManager; class RenderProxy; |
