SF: Refactor onPreComposition

Adds LayerFE::onPreComposition call, and adjusts the existing
implementation inside SurfaceFlinger to use it, in preparation to moving
the loop over to CompositionEngine.

Test: atest libsurfaceflinger_unittest libcompositionengine_test
Bug: 121291683
Change-Id: Ibc0fb1e87d37fabba753f265e70982b5ce70f9f2
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 7230152..adc19c8 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -1962,8 +1962,13 @@
 
     bool needExtraInvalidate = false;
     mDrawingState.traverseInZOrder([&](Layer* layer) {
-        if (layer->onPreComposition(mRefreshStartTime)) {
-            needExtraInvalidate = true;
+        auto compositionLayer = layer->getCompositionLayer();
+        if (compositionLayer) {
+            auto layerFE = compositionLayer->getLayerFE();
+
+            if (layerFE && layerFE->onPreComposition(mRefreshStartTime)) {
+                needExtraInvalidate = true;
+            }
         }
     });