SF: Reparent for screehshots should only be called on old parent layers
During a reparenting, a parent's children do not change, instead only the child's
reference to its parents change.
Bug: 124389032, 124372894
Test: go/wm-smoke
Test:build and run aosp_cf_x86_pasan
Change-Id: Ibceb036b8927eef143d9e544ac850c7c6379e1fe
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index c98220d..d425436 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -5583,7 +5583,7 @@
newParent->computeBounds(drawingBounds.toFloatRect(), ui::Transform());
oldParent->setChildrenDrawingParent(newParent);
}
- ~ReparentForDrawing() { newParent->setChildrenDrawingParent(oldParent); }
+ ~ReparentForDrawing() { oldParent->setChildrenDrawingParent(oldParent); }
};
void render(std::function<void()> drawLayers) override {