TimeStats: bound the layer records and dump in SF dumpsys
Fixes: 131121064
Test: all SF tests
Change-Id: Ief641dfb4f69e5099a7fbf42dcdeecc5eb3d2bf9
diff --git a/services/surfaceflinger/TimeStats/TimeStats.cpp b/services/surfaceflinger/TimeStats/TimeStats.cpp
index 740099e..c97a19b 100644
--- a/services/surfaceflinger/TimeStats/TimeStats.cpp
+++ b/services/surfaceflinger/TimeStats/TimeStats.cpp
@@ -67,6 +67,16 @@
}
}
+std::string TimeStats::miniDump() {
+ ATRACE_CALL();
+
+ std::string result = "TimeStats miniDump:\n";
+ std::lock_guard<std::mutex> lock(mMutex);
+ android::base::StringAppendF(&result, "Number of tracked layers is %zu\n",
+ mTimeStatsTracker.size());
+ return result;
+}
+
void TimeStats::incrementTotalFrames() {
if (!mEnabled.load()) return;
@@ -252,7 +262,8 @@
postTime);
std::lock_guard<std::mutex> lock(mMutex);
- if (!mTimeStatsTracker.count(layerID) && layerNameIsValid(layerName)) {
+ if (!mTimeStatsTracker.count(layerID) && mTimeStatsTracker.size() < MAX_NUM_LAYER_RECORDS &&
+ layerNameIsValid(layerName)) {
mTimeStatsTracker[layerID].layerName = layerName;
}
if (!mTimeStatsTracker.count(layerID)) return;