Index: cc/trees/layer_tree_host.cc |
diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc |
index 913ca1b1fc8131557fbeaffa9cf095759a1f9dc0..108a711dee641f6183c20cf7e3c8394decfb37ea 100644 |
--- a/cc/trees/layer_tree_host.cc |
+++ b/cc/trees/layer_tree_host.cc |
@@ -5,7 +5,6 @@ |
#include "cc/trees/layer_tree_host.h" |
#include <algorithm> |
-#include <stack> |
#include "base/bind.h" |
#include "base/command_line.h" |
@@ -438,17 +437,13 @@ void LayerTreeHost::SetDeferCommits(bool defer_commits) { |
void LayerTreeHost::DidDeferCommit() {} |
+static void SetNeedsDisplay(Layer* layer) { |
+ layer->SetNeedsDisplay(); |
+} |
+ |
void LayerTreeHost::SetNeedsDisplayOnAllLayers() { |
- std::stack<Layer*> layer_stack; |
- layer_stack.push(root_layer()); |
- while (!layer_stack.empty()) { |
- Layer* current_layer = layer_stack.top(); |
- layer_stack.pop(); |
- current_layer->SetNeedsDisplay(); |
- for (unsigned int i = 0; i < current_layer->children().size(); i++) { |
- layer_stack.push(current_layer->child_at(i)); |
- } |
- } |
+ if (root_layer()) |
+ LayerTreeHostCommon::CallFunctionForSubtree(SetNeedsDisplay, root_layer()); |
} |
void LayerTreeHost::CollectRenderingStats(RenderingStats* stats) const { |
@@ -672,29 +667,26 @@ static Layer* FindFirstScrollableLayer(Layer* layer) { |
return NULL; |
} |
-class CalculateLCDTextMetricsFunctor { |
- public: |
- void operator()(Layer* layer) { |
- LayerTreeHost* layer_tree_host = layer->layer_tree_host(); |
- if (!layer_tree_host) |
- return; |
- |
- if (!layer->SupportsLCDText()) |
- return; |
+static void CalculateLCDTextMetrics(Layer* layer) { |
+ LayerTreeHost* layer_tree_host = layer->layer_tree_host(); |
+ if (!layer_tree_host) |
+ return; |
- bool update_total_num_cc_layers_can_use_lcd_text = false; |
- bool update_total_num_cc_layers_will_use_lcd_text = false; |
- if (layer->draw_properties().can_use_lcd_text) { |
- update_total_num_cc_layers_can_use_lcd_text = true; |
- if (layer->contents_opaque()) |
- update_total_num_cc_layers_will_use_lcd_text = true; |
- } |
+ if (!layer->SupportsLCDText()) |
+ return; |
- layer_tree_host->IncrementLCDTextMetrics( |
- update_total_num_cc_layers_can_use_lcd_text, |
- update_total_num_cc_layers_will_use_lcd_text); |
+ bool update_total_num_cc_layers_can_use_lcd_text = false; |
+ bool update_total_num_cc_layers_will_use_lcd_text = false; |
+ if (layer->draw_properties().can_use_lcd_text) { |
+ update_total_num_cc_layers_can_use_lcd_text = true; |
+ if (layer->contents_opaque()) |
+ update_total_num_cc_layers_will_use_lcd_text = true; |
} |
-}; |
+ |
+ layer_tree_host->IncrementLCDTextMetrics( |
+ update_total_num_cc_layers_can_use_lcd_text, |
+ update_total_num_cc_layers_will_use_lcd_text); |
+} |
void LayerTreeHost::IncrementLCDTextMetrics( |
bool update_total_num_cc_layers_can_use_lcd_text, |
@@ -733,8 +725,8 @@ void LayerTreeHost::UpdateLayers(Layer* root_layer, |
if (total_frames_used_for_lcd_text_metrics_ <= |
kTotalFramesToUseForLCDTextMetrics) { |
- LayerTreeHostCommon::CallFunctionForSubtree< |
- CalculateLCDTextMetricsFunctor, Layer>(root_layer); |
+ LayerTreeHostCommon::CallFunctionForSubtree(CalculateLCDTextMetrics, |
+ root_layer); |
total_frames_used_for_lcd_text_metrics_++; |
} |
@@ -777,19 +769,14 @@ void LayerTreeHost::TriggerPrepaint() { |
SetNeedsCommit(); |
} |
-class LayerTreeHostReduceMemoryFunctor { |
- public: |
- void operator()(Layer* layer) { |
- layer->ReduceMemoryUsage(); |
- } |
-}; |
+static void ReduceMemoryUsageForLayer(Layer* layer) { |
+ layer->ReduceMemoryUsage(); |
+} |
void LayerTreeHost::ReduceMemoryUsage() { |
- if (!root_layer()) |
- return; |
- |
- LayerTreeHostCommon::CallFunctionForSubtree< |
- LayerTreeHostReduceMemoryFunctor, Layer>(root_layer()); |
+ if (root_layer()) |
+ LayerTreeHostCommon::CallFunctionForSubtree(ReduceMemoryUsageForLayer, |
+ root_layer()); |
} |
void LayerTreeHost::SetPrioritiesForSurfaces(size_t surface_memory_bytes) { |