Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4185)

Unified Diff: cc/trees/layer_tree_host.cc

Issue 15959012: cc: Make all layer recursion use CallFunctionForSubtree (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: DidBeginTracing changes Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | cc/trees/layer_tree_host_common.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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) {
« no previous file with comments | « no previous file | cc/trees/layer_tree_host_common.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698