SF: register layers with scheduler when added to current state
Scheduler shouldn't care about layers that are not part of the
current state as those layers are invisible.
Test: atest SetFrameRateTest
Bug: 186190571
Change-Id: Iee5a8ab6d54989f4a663e2fb51e3e956dd3cfa6e
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index ecee977..eaefc65 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -6437,13 +6437,17 @@
void SurfaceFlinger::onLayerFirstRef(Layer* layer) {
mNumLayers++;
- mScheduler->registerLayer(layer);
+ if (!layer->isRemovedFromCurrentState()) {
+ mScheduler->registerLayer(layer);
+ }
}
void SurfaceFlinger::onLayerDestroyed(Layer* layer) {
- mScheduler->deregisterLayer(layer);
mNumLayers--;
removeFromOffscreenLayers(layer);
+ if (!layer->isRemovedFromCurrentState()) {
+ mScheduler->deregisterLayer(layer);
+ }
}
// WARNING: ONLY CALL THIS FROM LAYER DTOR