diff --git a/dom/include/dom/layer_optimized_render_manager.h b/dom/include/dom/layer_optimized_render_manager.h index ce683c0cc47..1ffcd5839be 100644 --- a/dom/include/dom/layer_optimized_render_manager.h +++ b/dom/include/dom/layer_optimized_render_manager.h @@ -64,6 +64,8 @@ class LayerOptimizedRenderManager : public RenderManager { private: std::shared_ptr render_manager_; + bool IsEliminated(const std::shared_ptr& node) const; + bool CanBeEliminated(const std::shared_ptr& node); void UpdateRenderInfo(const std::shared_ptr& node); diff --git a/dom/src/dom/layer_optimized_render_manager.cc b/dom/src/dom/layer_optimized_render_manager.cc index 1ce6cadc28d..418f1a16c04 100644 --- a/dom/src/dom/layer_optimized_render_manager.cc +++ b/dom/src/dom/layer_optimized_render_manager.cc @@ -37,7 +37,7 @@ void LayerOptimizedRenderManager::CreateRenderNode(std::weak_ptr root_ std::vector> nodes_to_create; for (const auto& node : nodes) { node->SetLayoutOnly(ComputeLayoutOnly(node)); - if (!CanBeEliminated(node)) { + if (!IsEliminated(node)) { UpdateRenderInfo(node); nodes_to_create.push_back(node); } @@ -54,9 +54,10 @@ void LayerOptimizedRenderManager::UpdateRenderNode(std::weak_ptr root_ std::vector> nodes_to_create; std::vector> nodes_to_update; for (const auto& node : nodes) { - bool could_be_eliminated = CanBeEliminated(node); + bool could_be_eliminated = IsEliminated(node); node->SetLayoutOnly(ComputeLayoutOnly(node)); - if (!CanBeEliminated(node)) { + bool can_be_eliminated = CanBeEliminated(node); + if (!can_be_eliminated) { if (could_be_eliminated) { UpdateRenderInfo(node); nodes_to_create.push_back(node); @@ -278,8 +279,12 @@ bool LayerOptimizedRenderManager::IsJustLayoutProp(const char *prop_name) const [prop_name](const char *prop) { return strcmp(prop, prop_name) == 0; }); } +bool LayerOptimizedRenderManager::IsEliminated(const std::shared_ptr& node) const { + return (node->IsLayoutOnly() || node->IsVirtual()) && node->IsEnableEliminated(); +} + bool LayerOptimizedRenderManager::CanBeEliminated(const std::shared_ptr& node) { - bool eliminated = (node->IsLayoutOnly() || node->IsVirtual()) && node->IsEnableEliminated(); + bool eliminated = IsEliminated(node); if (!eliminated) { node->SetEnableEliminated(false); } @@ -300,7 +305,7 @@ void LayerOptimizedRenderManager::UpdateRenderInfo(const std::shared_ptr LayerOptimizedRenderManager::GetRenderParent( const std::shared_ptr &node) { auto parent = node->GetParent(); - while (parent && CanBeEliminated(parent)) { + while (parent && IsEliminated(parent)) { parent = parent->GetParent(); } return parent; @@ -323,7 +328,7 @@ LayerOptimizedRenderManager::CalculateRenderNodeIndex(const std::shared_ptr>& valid_children_nodes) { for (size_t i = 0; i < node->GetChildCount(); i++) { auto child_node = node->GetChildAt(i); - if (CanBeEliminated(child_node)) { + if (IsEliminated(child_node)) { FindValidChildren(child_node, valid_children_nodes); } else { valid_children_nodes.push_back(child_node);