Loading libs/hwui/Layer.cpp +2 −0 Original line number Diff line number Diff line Loading @@ -54,9 +54,11 @@ Layer::Layer(RenderState& renderState, const uint32_t layerWidth, const uint32_t convexMask = NULL; caches.resourceCache.incrementRefcount(this); rendererLightPosDirty = true; renderState.registerLayer(this); } Layer::~Layer() { renderState.unregisterLayer(this); SkSafeUnref(colorFilter); removeFbo(); deleteTexture(); Loading libs/hwui/RenderState.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,10 @@ void RenderState::onGLContextCreated() { mCaches->init(); } void RenderState::onGLContextDestroyed() { LOG_ALWAYS_FATAL_IF(!mActiveLayers.empty(), "layers have survived gl context destruction"); } void RenderState::setViewport(GLsizei width, GLsizei height) { mViewportWidth = width; mViewportHeight = height; Loading libs/hwui/RenderState.h +10 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ #ifndef RENDERSTATE_H #define RENDERSTATE_H #include <set> #include <GLES2/gl2.h> #include <GLES2/gl2ext.h> Loading @@ -37,6 +38,7 @@ class RenderState { PREVENT_COPY_AND_ASSIGN(RenderState); public: void onGLContextCreated(); void onGLContextDestroyed(); void setViewport(GLsizei width, GLsizei height); void getViewport(GLsizei* outWidth, GLsizei* outHeight); Loading @@ -48,6 +50,13 @@ public: void debugOverdraw(bool enable, bool clear); void registerLayer(const Layer* layer) { mActiveLayers.insert(layer); } void unregisterLayer(const Layer* layer) { mActiveLayers.erase(layer); } private: friend class renderthread::RenderThread; Loading @@ -58,6 +67,7 @@ private: ~RenderState(); Caches* mCaches; std::set<const Layer*> mActiveLayers; GLsizei mViewportWidth; GLsizei mViewportHeight; Loading libs/hwui/renderthread/EglManager.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -214,6 +214,7 @@ void EglManager::destroy() { Caches::getInstance().terminate(); } mRenderThread.renderState().onGLContextDestroyed(); eglDestroyContext(mEglDisplay, mEglContext); eglDestroySurface(mEglDisplay, mPBufferSurface); eglMakeCurrent(mEglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); Loading Loading
libs/hwui/Layer.cpp +2 −0 Original line number Diff line number Diff line Loading @@ -54,9 +54,11 @@ Layer::Layer(RenderState& renderState, const uint32_t layerWidth, const uint32_t convexMask = NULL; caches.resourceCache.incrementRefcount(this); rendererLightPosDirty = true; renderState.registerLayer(this); } Layer::~Layer() { renderState.unregisterLayer(this); SkSafeUnref(colorFilter); removeFbo(); deleteTexture(); Loading
libs/hwui/RenderState.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,10 @@ void RenderState::onGLContextCreated() { mCaches->init(); } void RenderState::onGLContextDestroyed() { LOG_ALWAYS_FATAL_IF(!mActiveLayers.empty(), "layers have survived gl context destruction"); } void RenderState::setViewport(GLsizei width, GLsizei height) { mViewportWidth = width; mViewportHeight = height; Loading
libs/hwui/RenderState.h +10 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ #ifndef RENDERSTATE_H #define RENDERSTATE_H #include <set> #include <GLES2/gl2.h> #include <GLES2/gl2ext.h> Loading @@ -37,6 +38,7 @@ class RenderState { PREVENT_COPY_AND_ASSIGN(RenderState); public: void onGLContextCreated(); void onGLContextDestroyed(); void setViewport(GLsizei width, GLsizei height); void getViewport(GLsizei* outWidth, GLsizei* outHeight); Loading @@ -48,6 +50,13 @@ public: void debugOverdraw(bool enable, bool clear); void registerLayer(const Layer* layer) { mActiveLayers.insert(layer); } void unregisterLayer(const Layer* layer) { mActiveLayers.erase(layer); } private: friend class renderthread::RenderThread; Loading @@ -58,6 +67,7 @@ private: ~RenderState(); Caches* mCaches; std::set<const Layer*> mActiveLayers; GLsizei mViewportWidth; GLsizei mViewportHeight; Loading
libs/hwui/renderthread/EglManager.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -214,6 +214,7 @@ void EglManager::destroy() { Caches::getInstance().terminate(); } mRenderThread.renderState().onGLContextDestroyed(); eglDestroyContext(mEglDisplay, mEglContext); eglDestroySurface(mEglDisplay, mPBufferSurface); eglMakeCurrent(mEglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); Loading