diff options
author | 2014-09-10 13:04:31 -0700 | |
---|---|---|
committer | 2014-09-10 16:10:24 -0700 | |
commit | bfd1cd620991ac2fa9202fdce6c00ec47d071935 (patch) | |
tree | cc0460e5066d0a765610fb5eb4a3e30ef9bc28a5 /libs/hwui/RenderState.cpp | |
parent | fc81bfe3fb43296ca7040b8f259e1cbec50898ca (diff) |
Additional layer logging
bug:17208461
Track layer's last known state.
Change-Id: Ic1799191f5839a1d6cc56f598f2ac2671dc27a6f
Diffstat (limited to 'libs/hwui/RenderState.cpp')
-rw-r--r-- | libs/hwui/RenderState.cpp | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/libs/hwui/RenderState.cpp b/libs/hwui/RenderState.cpp index ec8307f28d5b..54af52802fec 100644 --- a/libs/hwui/RenderState.cpp +++ b/libs/hwui/RenderState.cpp @@ -39,13 +39,16 @@ void RenderState::onGLContextCreated() { void RenderState::onGLContextDestroyed() { AutoMutex _lock(mLayerLock); - if (CC_UNLIKELY(!mActiveLayers.empty())) { + size_t size = mActiveLayers.size(); + if (CC_UNLIKELY(size != 0)) { + ALOGE("Crashing, have %d contexts and %d layers at context destruction. isempty %d", + mRegisteredContexts.size(), size, mActiveLayers.empty()); mCaches->dumpMemoryUsage(); for (std::set<renderthread::CanvasContext*>::iterator cit = mRegisteredContexts.begin(); cit != mRegisteredContexts.end(); cit++) { renderthread::CanvasContext* context = *cit; - ALOGD("Context: %p (root = %p)", context, context->mRootRenderNode.get()); - ALOGD(" Prefeteched layers: %zu", context->mPrefetechedLayers.size()); + ALOGE("Context: %p (root = %p)", context, context->mRootRenderNode.get()); + ALOGE(" Prefeteched layers: %zu", context->mPrefetechedLayers.size()); for (std::set<RenderNode*>::iterator pit = context->mPrefetechedLayers.begin(); pit != context->mPrefetechedLayers.end(); pit++) { (*pit)->debugDumpLayers(" "); @@ -53,13 +56,17 @@ void RenderState::onGLContextDestroyed() { context->mRootRenderNode->debugDumpLayers(" "); } + + if (mActiveLayers.begin() == mActiveLayers.end()) { + ALOGE("set has become empty. wat."); + } for (std::set<const Layer*>::iterator lit = mActiveLayers.begin(); lit != mActiveLayers.end(); lit++) { const Layer* layer = *(lit); - ALOGD("Layer %p, fbo %d, buildlayered %d", - layer, layer->getFbo(), layer->wasBuildLayered); + ALOGE("Layer %p, state %d, texlayer %d, fbo %d, buildlayered %d", + layer, layer->state, layer->isTextureLayer(), layer->getFbo(), layer->wasBuildLayered); } - LOG_ALWAYS_FATAL("layers have survived gl context destruction"); + LOG_ALWAYS_FATAL("%d layers have survived gl context destruction", size); } } |