diff options
Diffstat (limited to 'libs/hwui/renderthread/CanvasContext.h')
| -rw-r--r-- | libs/hwui/renderthread/CanvasContext.h | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/libs/hwui/renderthread/CanvasContext.h b/libs/hwui/renderthread/CanvasContext.h index 0cbed6f..7c27190 100644 --- a/libs/hwui/renderthread/CanvasContext.h +++ b/libs/hwui/renderthread/CanvasContext.h @@ -17,6 +17,8 @@ #ifndef CANVASCONTEXT_H_ #define CANVASCONTEXT_H_ +#include <set> + #include <cutils/compiler.h> #include <EGL/egl.h> #include <SkBitmap.h> @@ -25,6 +27,7 @@ #include "../DamageAccumulator.h" #include "../DrawProfiler.h" +#include "../IContextFactory.h" #include "../RenderNode.h" #include "RenderTask.h" #include "RenderThread.h" @@ -34,6 +37,7 @@ namespace android { namespace uirenderer { +class AnimationContext; class DeferredLayerUpdater; class OpenGLRenderer; class Rect; @@ -45,9 +49,11 @@ class EglManager; // This per-renderer class manages the bridge between the global EGL context // and the render surface. +// TODO: Rename to Renderer or some other per-window, top-level manager class CanvasContext : public IFrameCallback { public: - CanvasContext(RenderThread& thread, bool translucent, RenderNode* rootRenderNode); + CanvasContext(RenderThread& thread, bool translucent, RenderNode* rootRenderNode, + IContextFactory* contextFactory); virtual ~CanvasContext(); bool initialize(ANativeWindow* window); @@ -67,6 +73,7 @@ public: void buildLayer(RenderNode* node); bool copyLayerInto(DeferredLayerUpdater* layer, SkBitmap* bitmap); + void markLayerInUse(RenderNode* node); void destroyHardwareResources(); static void trimMemory(RenderThread& thread, int level); @@ -95,6 +102,8 @@ private: void requireGlContext(); + void freePrefetechedLayers(); + RenderThread& mRenderThread; EglManager& mEglManager; sp<ANativeWindow> mNativeWindow; @@ -105,10 +114,13 @@ private: OpenGLRenderer* mCanvas; bool mHaveNewSurface; DamageAccumulator mDamageAccumulator; + AnimationContext* mAnimationContext; const sp<RenderNode> mRootRenderNode; DrawProfiler mProfiler; + + std::set<RenderNode*> mPrefetechedLayers; }; } /* namespace renderthread */ |
