Loading services/surfaceflinger/FrontEnd/LayerHierarchy.cpp +7 −3 Original line number Original line Diff line number Diff line Loading @@ -52,8 +52,12 @@ LayerHierarchy::LayerHierarchy(const LayerHierarchy& hierarchy, bool childrenOnl mChildren = hierarchy.mChildren; mChildren = hierarchy.mChildren; } } void LayerHierarchy::traverse(const Visitor& visitor, void LayerHierarchy::traverse(const Visitor& visitor, LayerHierarchy::TraversalPath& traversalPath, LayerHierarchy::TraversalPath& traversalPath) const { uint32_t depth) const { LLOG_ALWAYS_FATAL_WITH_TRACE_IF(depth > 50, "Cycle detected in LayerHierarchy::traverse. See " "traverse_stack_overflow_transactions.winscope"); if (mLayer) { if (mLayer) { bool breakTraversal = !visitor(*this, traversalPath); bool breakTraversal = !visitor(*this, traversalPath); if (breakTraversal) { if (breakTraversal) { Loading @@ -66,7 +70,7 @@ void LayerHierarchy::traverse(const Visitor& visitor, for (auto& [child, childVariant] : mChildren) { for (auto& [child, childVariant] : mChildren) { ScopedAddToTraversalPath addChildToTraversalPath(traversalPath, child->mLayer->id, ScopedAddToTraversalPath addChildToTraversalPath(traversalPath, child->mLayer->id, childVariant); childVariant); child->traverse(visitor, traversalPath); child->traverse(visitor, traversalPath, depth + 1); } } } } Loading services/surfaceflinger/FrontEnd/LayerHierarchy.h +3 −2 Original line number Original line Diff line number Diff line Loading @@ -147,7 +147,7 @@ public: if (mLayer) { if (mLayer) { root.id = mLayer->id; root.id = mLayer->id; } } traverse(visitor, root); traverse(visitor, root, /*depth=*/0); } } // Traverse the hierarchy in z-order, skipping children that have relative parents. // Traverse the hierarchy in z-order, skipping children that have relative parents. Loading Loading @@ -190,7 +190,8 @@ private: void sortChildrenByZOrder(); void sortChildrenByZOrder(); void updateChild(LayerHierarchy*, LayerHierarchy::Variant); void updateChild(LayerHierarchy*, LayerHierarchy::Variant); void traverseInZOrder(const Visitor& visitor, LayerHierarchy::TraversalPath& parent) const; void traverseInZOrder(const Visitor& visitor, LayerHierarchy::TraversalPath& parent) const; void traverse(const Visitor& visitor, LayerHierarchy::TraversalPath& parent) const; void traverse(const Visitor& visitor, LayerHierarchy::TraversalPath& parent, uint32_t depth = 0) const; void dump(std::ostream& out, const std::string& prefix, LayerHierarchy::Variant variant, void dump(std::ostream& out, const std::string& prefix, LayerHierarchy::Variant variant, bool isLastChild, bool includeMirroredHierarchy) const; bool isLastChild, bool includeMirroredHierarchy) const; Loading Loading
services/surfaceflinger/FrontEnd/LayerHierarchy.cpp +7 −3 Original line number Original line Diff line number Diff line Loading @@ -52,8 +52,12 @@ LayerHierarchy::LayerHierarchy(const LayerHierarchy& hierarchy, bool childrenOnl mChildren = hierarchy.mChildren; mChildren = hierarchy.mChildren; } } void LayerHierarchy::traverse(const Visitor& visitor, void LayerHierarchy::traverse(const Visitor& visitor, LayerHierarchy::TraversalPath& traversalPath, LayerHierarchy::TraversalPath& traversalPath) const { uint32_t depth) const { LLOG_ALWAYS_FATAL_WITH_TRACE_IF(depth > 50, "Cycle detected in LayerHierarchy::traverse. See " "traverse_stack_overflow_transactions.winscope"); if (mLayer) { if (mLayer) { bool breakTraversal = !visitor(*this, traversalPath); bool breakTraversal = !visitor(*this, traversalPath); if (breakTraversal) { if (breakTraversal) { Loading @@ -66,7 +70,7 @@ void LayerHierarchy::traverse(const Visitor& visitor, for (auto& [child, childVariant] : mChildren) { for (auto& [child, childVariant] : mChildren) { ScopedAddToTraversalPath addChildToTraversalPath(traversalPath, child->mLayer->id, ScopedAddToTraversalPath addChildToTraversalPath(traversalPath, child->mLayer->id, childVariant); childVariant); child->traverse(visitor, traversalPath); child->traverse(visitor, traversalPath, depth + 1); } } } } Loading
services/surfaceflinger/FrontEnd/LayerHierarchy.h +3 −2 Original line number Original line Diff line number Diff line Loading @@ -147,7 +147,7 @@ public: if (mLayer) { if (mLayer) { root.id = mLayer->id; root.id = mLayer->id; } } traverse(visitor, root); traverse(visitor, root, /*depth=*/0); } } // Traverse the hierarchy in z-order, skipping children that have relative parents. // Traverse the hierarchy in z-order, skipping children that have relative parents. Loading Loading @@ -190,7 +190,8 @@ private: void sortChildrenByZOrder(); void sortChildrenByZOrder(); void updateChild(LayerHierarchy*, LayerHierarchy::Variant); void updateChild(LayerHierarchy*, LayerHierarchy::Variant); void traverseInZOrder(const Visitor& visitor, LayerHierarchy::TraversalPath& parent) const; void traverseInZOrder(const Visitor& visitor, LayerHierarchy::TraversalPath& parent) const; void traverse(const Visitor& visitor, LayerHierarchy::TraversalPath& parent) const; void traverse(const Visitor& visitor, LayerHierarchy::TraversalPath& parent, uint32_t depth = 0) const; void dump(std::ostream& out, const std::string& prefix, LayerHierarchy::Variant variant, void dump(std::ostream& out, const std::string& prefix, LayerHierarchy::Variant variant, bool isLastChild, bool includeMirroredHierarchy) const; bool isLastChild, bool includeMirroredHierarchy) const; Loading