From 599e254ea33231b1809466ae765dbee53dc4685c Mon Sep 17 00:00:00 2001 From: Chris Craik Date: Fri, 5 Sep 2014 15:17:11 -0700 Subject: [PATCH] Additional layer logging, and added mutex bug:17208461 Change-Id: I006d432a3b633235dde0b81ad2bf28b835b5335f --- libs/hwui/RenderState.cpp | 8 ++++++++ libs/hwui/RenderState.h | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/libs/hwui/RenderState.cpp b/libs/hwui/RenderState.cpp index a7c5e85d91235..ec8307f28d5b6 100644 --- a/libs/hwui/RenderState.cpp +++ b/libs/hwui/RenderState.cpp @@ -38,6 +38,7 @@ void RenderState::onGLContextCreated() { } void RenderState::onGLContextDestroyed() { + AutoMutex _lock(mLayerLock); if (CC_UNLIKELY(!mActiveLayers.empty())) { mCaches->dumpMemoryUsage(); for (std::set::iterator cit = mRegisteredContexts.begin(); @@ -51,6 +52,13 @@ void RenderState::onGLContextDestroyed() { } context->mRootRenderNode->debugDumpLayers(" "); } + + for (std::set::iterator lit = mActiveLayers.begin(); + lit != mActiveLayers.end(); lit++) { + const Layer* layer = *(lit); + ALOGD("Layer %p, fbo %d, buildlayered %d", + layer, layer->getFbo(), layer->wasBuildLayered); + } LOG_ALWAYS_FATAL("layers have survived gl context destruction"); } } diff --git a/libs/hwui/RenderState.h b/libs/hwui/RenderState.h index c7ab197c4fb25..74bafcaeb4206 100644 --- a/libs/hwui/RenderState.h +++ b/libs/hwui/RenderState.h @@ -19,6 +19,7 @@ #include #include #include +#include #include @@ -52,9 +53,11 @@ public: void debugOverdraw(bool enable, bool clear); void registerLayer(const Layer* layer) { + AutoMutex _lock(mLayerLock); mActiveLayers.insert(layer); } void unregisterLayer(const Layer* layer) { + AutoMutex _lock(mLayerLock); mActiveLayers.erase(layer); } @@ -83,6 +86,7 @@ private: GLsizei mViewportWidth; GLsizei mViewportHeight; GLuint mFramebuffer; + Mutex mLayerLock; }; } /* namespace uirenderer */