From 48b888aab9fdcfba250722dffbdffe61f11c64f3 Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Wed, 19 Jan 2011 16:15:53 -0800 Subject: [PATCH] improve SurfaceFlinger 'dumpsys' log list the purgatory, which shows windows that have been closed, but for which the client still has references. Change-Id: I5168bb88cb328d5d77d71d0871deb9190f493126 --- libs/ui/GraphicBufferAllocator.cpp | 2 +- services/surfaceflinger/LayerBase.cpp | 12 +++++++++ services/surfaceflinger/LayerBase.h | 2 ++ services/surfaceflinger/SurfaceFlinger.cpp | 29 ++++++++++++++++++++++ 4 files changed, 44 insertions(+), 1 deletion(-) diff --git a/libs/ui/GraphicBufferAllocator.cpp b/libs/ui/GraphicBufferAllocator.cpp index ce8468337..33ef1fc89 100644 --- a/libs/ui/GraphicBufferAllocator.cpp +++ b/libs/ui/GraphicBufferAllocator.cpp @@ -61,7 +61,7 @@ void GraphicBufferAllocator::dump(String8& result) const const size_t c = list.size(); for (size_t i=0 ; i& args) result.append(buffer); } + /* + * Dump the visible layer list + */ const LayerVector& currentLayers = mCurrentState.layersSortedByZ; const size_t count = currentLayers.size(); + snprintf(buffer, SIZE, "Visible layers (count = %d)\n", count); + result.append(buffer); for (size_t i=0 ; i& layer(currentLayers[i]); layer->dump(result, buffer, SIZE); @@ -1502,6 +1507,24 @@ status_t SurfaceFlinger::dump(int fd, const Vector& args) layer->visibleRegionScreen.dump(result, "visibleRegionScreen"); } + /* + * Dump the layers in the purgatory + */ + + const size_t purgatorySize = mLayerPurgatory.size(); + snprintf(buffer, SIZE, "Purgatory state (%d entries)\n", purgatorySize); + result.append(buffer); + for (size_t i=0 ; i& layer(mLayerPurgatory.itemAt(i)); + layer->shortDump(result, buffer, SIZE); + } + + /* + * Dump SurfaceFlinger global state + */ + + snprintf(buffer, SIZE, "SurfaceFlinger global state\n"); + result.append(buffer); mWormholeRegion.dump(result, "WormholeRegion"); const DisplayHardware& hw(graphicPlane(0).displayHardware()); snprintf(buffer, SIZE, @@ -1527,6 +1550,9 @@ status_t SurfaceFlinger::dump(int fd, const Vector& args) result.append(buffer); } + /* + * Dump HWComposer state + */ HWComposer& hwc(hw.getHwComposer()); snprintf(buffer, SIZE, " h/w composer %s and %s\n", hwc.initCheck()==NO_ERROR ? "present" : "not present", @@ -1534,6 +1560,9 @@ status_t SurfaceFlinger::dump(int fd, const Vector& args) result.append(buffer); hwc.dump(result, buffer, SIZE); + /* + * Dump gralloc state + */ const GraphicBufferAllocator& alloc(GraphicBufferAllocator::get()); alloc.dump(result); hw.dump(result);