Loading services/surfaceflinger/SurfaceFlinger.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -374,6 +374,10 @@ SurfaceFlinger::SurfaceFlinger(Factory& factory) : SurfaceFlinger(factory, SkipI const size_t defaultListSize = MAX_LAYERS; auto listSize = property_get_int32("debug.sf.max_igbp_list_size", int32_t(defaultListSize)); mMaxGraphicBufferProducerListSize = (listSize > 0) ? size_t(listSize) : defaultListSize; mGraphicBufferProducerListSizeLogThreshold = std::max(static_cast<int>(0.95 * static_cast<double>(mMaxGraphicBufferProducerListSize)), 1); property_get("debug.sf.luma_sampling", value, "1"); mLumaSampling = atoi(value); Loading Loading @@ -3032,6 +3036,11 @@ status_t SurfaceFlinger::addClientLayer(const sp<Client>& client, const sp<IBind "Suspected IGBP leak: %zu IGBPs (%zu max), %zu Layers", mGraphicBufferProducerList.size(), mMaxGraphicBufferProducerListSize, mNumLayers.load()); if (mGraphicBufferProducerList.size() > mGraphicBufferProducerListSizeLogThreshold) { ALOGW("Suspected IGBP leak: %zu IGBPs (%zu max), %zu Layers", mGraphicBufferProducerList.size(), mMaxGraphicBufferProducerListSize, mNumLayers.load()); } } mLayersAdded = true; } Loading services/surfaceflinger/SurfaceFlinger.h +4 −0 Original line number Diff line number Diff line Loading @@ -972,6 +972,10 @@ private: // Can't be unordered_set because wp<> isn't hashable std::set<wp<IBinder>> mGraphicBufferProducerList; size_t mMaxGraphicBufferProducerListSize = MAX_LAYERS; // If there are more GraphicBufferProducers tracked by SurfaceFlinger than // this threshold, then begin logging. size_t mGraphicBufferProducerListSizeLogThreshold = static_cast<size_t>(0.95 * static_cast<double>(MAX_LAYERS)); // protected by mStateLock (but we could use another lock) bool mLayersRemoved = false; Loading Loading
services/surfaceflinger/SurfaceFlinger.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -374,6 +374,10 @@ SurfaceFlinger::SurfaceFlinger(Factory& factory) : SurfaceFlinger(factory, SkipI const size_t defaultListSize = MAX_LAYERS; auto listSize = property_get_int32("debug.sf.max_igbp_list_size", int32_t(defaultListSize)); mMaxGraphicBufferProducerListSize = (listSize > 0) ? size_t(listSize) : defaultListSize; mGraphicBufferProducerListSizeLogThreshold = std::max(static_cast<int>(0.95 * static_cast<double>(mMaxGraphicBufferProducerListSize)), 1); property_get("debug.sf.luma_sampling", value, "1"); mLumaSampling = atoi(value); Loading Loading @@ -3032,6 +3036,11 @@ status_t SurfaceFlinger::addClientLayer(const sp<Client>& client, const sp<IBind "Suspected IGBP leak: %zu IGBPs (%zu max), %zu Layers", mGraphicBufferProducerList.size(), mMaxGraphicBufferProducerListSize, mNumLayers.load()); if (mGraphicBufferProducerList.size() > mGraphicBufferProducerListSizeLogThreshold) { ALOGW("Suspected IGBP leak: %zu IGBPs (%zu max), %zu Layers", mGraphicBufferProducerList.size(), mMaxGraphicBufferProducerListSize, mNumLayers.load()); } } mLayersAdded = true; } Loading
services/surfaceflinger/SurfaceFlinger.h +4 −0 Original line number Diff line number Diff line Loading @@ -972,6 +972,10 @@ private: // Can't be unordered_set because wp<> isn't hashable std::set<wp<IBinder>> mGraphicBufferProducerList; size_t mMaxGraphicBufferProducerListSize = MAX_LAYERS; // If there are more GraphicBufferProducers tracked by SurfaceFlinger than // this threshold, then begin logging. size_t mGraphicBufferProducerListSizeLogThreshold = static_cast<size_t>(0.95 * static_cast<double>(MAX_LAYERS)); // protected by mStateLock (but we could use another lock) bool mLayersRemoved = false; Loading