SurfaceFlinger: clear LayerHistory on touch
Clear LayerHistory and mark all layers as inactive when getting
a touch event to prevent a quick refresh rate bounce as LayerHistory
picks up with the FPS.
Fixes: 134663749
Test: live wallpaper + Open notification shade + wait for 60Hz + Click on "USB debugging connected"
Change-Id: Ifa095fbcdb95ffe413cc77c5e062f1174815158b
diff --git a/services/surfaceflinger/Scheduler/LayerHistory.cpp b/services/surfaceflinger/Scheduler/LayerHistory.cpp
index 1db43a3..e762af3 100644
--- a/services/surfaceflinger/Scheduler/LayerHistory.cpp
+++ b/services/surfaceflinger/Scheduler/LayerHistory.cpp
@@ -173,5 +173,18 @@
}
}
+void LayerHistory::clearHistory() {
+ std::lock_guard lock(mLock);
+
+ auto it = mActiveLayerInfos.begin();
+ while (it != mActiveLayerInfos.end()) {
+ auto id = it->first;
+ auto layerInfo = it->second;
+ layerInfo->clearHistory();
+ mInactiveLayerInfos.insert({id, layerInfo});
+ it = mActiveLayerInfos.erase(it);
+ }
+}
+
} // namespace scheduler
} // namespace android
\ No newline at end of file