OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CC_TREES_LAYER_TREE_HOST_H_ | 5 #ifndef CC_TREES_LAYER_TREE_HOST_H_ |
6 #define CC_TREES_LAYER_TREE_HOST_H_ | 6 #define CC_TREES_LAYER_TREE_HOST_H_ |
7 | 7 |
8 #include <limits> | 8 #include <limits> |
9 #include <list> | 9 #include <list> |
10 #include <string> | 10 #include <string> |
11 #include <vector> | 11 #include <vector> |
12 | 12 |
13 #include "base/basictypes.h" | 13 #include "base/basictypes.h" |
14 #include "base/cancelable_callback.h" | 14 #include "base/cancelable_callback.h" |
15 #include "base/containers/hash_tables.h" | 15 #include "base/containers/hash_tables.h" |
16 #include "base/memory/ref_counted.h" | 16 #include "base/memory/ref_counted.h" |
17 #include "base/memory/scoped_ptr.h" | 17 #include "base/memory/scoped_ptr.h" |
18 #include "base/memory/weak_ptr.h" | 18 #include "base/memory/weak_ptr.h" |
19 #include "base/time/time.h" | 19 #include "base/time/time.h" |
| 20 #include "base/timer/timer.h" |
20 #include "cc/animation/animation_events.h" | 21 #include "cc/animation/animation_events.h" |
21 #include "cc/base/cc_export.h" | 22 #include "cc/base/cc_export.h" |
22 #include "cc/base/scoped_ptr_vector.h" | 23 #include "cc/base/scoped_ptr_vector.h" |
23 #include "cc/debug/micro_benchmark.h" | 24 #include "cc/debug/micro_benchmark.h" |
24 #include "cc/debug/micro_benchmark_controller.h" | 25 #include "cc/debug/micro_benchmark_controller.h" |
25 #include "cc/input/input_handler.h" | 26 #include "cc/input/input_handler.h" |
26 #include "cc/input/scrollbar.h" | 27 #include "cc/input/scrollbar.h" |
27 #include "cc/input/top_controls_state.h" | 28 #include "cc/input/top_controls_state.h" |
28 #include "cc/layers/layer_lists.h" | 29 #include "cc/layers/layer_lists.h" |
29 #include "cc/output/output_surface.h" | 30 #include "cc/output/output_surface.h" |
30 #include "cc/resources/resource_format.h" | 31 #include "cc/resources/resource_format.h" |
31 #include "cc/resources/scoped_ui_resource.h" | 32 #include "cc/resources/scoped_ui_resource.h" |
32 #include "cc/resources/ui_resource_bitmap.h" | 33 #include "cc/resources/ui_resource_bitmap.h" |
33 #include "cc/resources/ui_resource_client.h" | 34 #include "cc/resources/ui_resource_client.h" |
34 #include "cc/scheduler/rate_limiter.h" | |
35 #include "cc/trees/layer_tree_host_client.h" | 35 #include "cc/trees/layer_tree_host_client.h" |
36 #include "cc/trees/layer_tree_host_common.h" | 36 #include "cc/trees/layer_tree_host_common.h" |
37 #include "cc/trees/layer_tree_settings.h" | 37 #include "cc/trees/layer_tree_settings.h" |
38 #include "cc/trees/occlusion_tracker.h" | 38 #include "cc/trees/occlusion_tracker.h" |
39 #include "cc/trees/proxy.h" | 39 #include "cc/trees/proxy.h" |
40 #include "third_party/skia/include/core/SkColor.h" | 40 #include "third_party/skia/include/core/SkColor.h" |
41 #include "ui/events/latency_info.h" | 41 #include "ui/events/latency_info.h" |
42 #include "ui/gfx/rect.h" | 42 #include "ui/gfx/rect.h" |
43 | 43 |
44 namespace WebKit { class WebGraphicsContext3D; } | |
45 | |
46 #if defined(COMPILER_GCC) | |
47 namespace BASE_HASH_NAMESPACE { | |
48 template <> | |
49 struct hash<WebKit::WebGraphicsContext3D*> { | |
50 size_t operator()(WebKit::WebGraphicsContext3D* ptr) const { | |
51 return hash<size_t>()(reinterpret_cast<size_t>(ptr)); | |
52 } | |
53 }; | |
54 } // namespace BASE_HASH_NAMESPACE | |
55 #endif // COMPILER | |
56 | |
57 namespace cc { | 44 namespace cc { |
58 | 45 |
59 class AnimationRegistrar; | 46 class AnimationRegistrar; |
60 class HeadsUpDisplayLayer; | 47 class HeadsUpDisplayLayer; |
61 class Layer; | 48 class Layer; |
62 class LayerTreeHostImpl; | 49 class LayerTreeHostImpl; |
63 class LayerTreeHostImplClient; | 50 class LayerTreeHostImplClient; |
64 class PrioritizedResourceManager; | 51 class PrioritizedResourceManager; |
65 class PrioritizedResource; | 52 class PrioritizedResource; |
66 class Region; | 53 class Region; |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
115 } | 102 } |
116 | 103 |
117 UIResourceRequest& operator=(const UIResourceRequest& request); | 104 UIResourceRequest& operator=(const UIResourceRequest& request); |
118 | 105 |
119 private: | 106 private: |
120 UIResourceRequestType type_; | 107 UIResourceRequestType type_; |
121 UIResourceId id_; | 108 UIResourceId id_; |
122 scoped_ptr<UIResourceBitmap> bitmap_; | 109 scoped_ptr<UIResourceBitmap> bitmap_; |
123 }; | 110 }; |
124 | 111 |
125 class CC_EXPORT LayerTreeHost : NON_EXPORTED_BASE(public RateLimiterClient) { | 112 class CC_EXPORT LayerTreeHost { |
126 public: | 113 public: |
127 // The SharedBitmapManager will be used on the compositor thread. | 114 // The SharedBitmapManager will be used on the compositor thread. |
128 static scoped_ptr<LayerTreeHost> Create( | 115 static scoped_ptr<LayerTreeHost> Create( |
129 LayerTreeHostClient* client, | 116 LayerTreeHostClient* client, |
130 SharedBitmapManager* manager, | 117 SharedBitmapManager* manager, |
131 const LayerTreeSettings& settings, | 118 const LayerTreeSettings& settings, |
132 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner); | 119 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner); |
133 virtual ~LayerTreeHost(); | 120 virtual ~LayerTreeHost(); |
134 | 121 |
135 void SetLayerTreeHostClientReady(); | 122 void SetLayerTreeHostClientReady(); |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
269 void StartPageScaleAnimation(gfx::Vector2d target_offset, | 256 void StartPageScaleAnimation(gfx::Vector2d target_offset, |
270 bool use_anchor, | 257 bool use_anchor, |
271 float scale, | 258 float scale, |
272 base::TimeDelta duration); | 259 base::TimeDelta duration); |
273 | 260 |
274 void ApplyScrollAndScale(const ScrollAndScaleSet& info); | 261 void ApplyScrollAndScale(const ScrollAndScaleSet& info); |
275 | 262 |
276 void SetImplTransform(const gfx::Transform& transform); | 263 void SetImplTransform(const gfx::Transform& transform); |
277 void SetLatencyInfo(const ui::LatencyInfo& latency_info); | 264 void SetLatencyInfo(const ui::LatencyInfo& latency_info); |
278 | 265 |
279 virtual void StartRateLimiter(WebKit::WebGraphicsContext3D* context3d); | 266 // Virtual for tests. |
280 virtual void StopRateLimiter(WebKit::WebGraphicsContext3D* context3d); | 267 virtual void StartRateLimiter(); |
| 268 virtual void StopRateLimiter(); |
281 | 269 |
282 // RateLimiterClient implementation. | 270 void RateLimit(); |
283 virtual void RateLimit() OVERRIDE; | |
284 | 271 |
285 bool AlwaysUsePartialTextureUpdates(); | 272 bool AlwaysUsePartialTextureUpdates(); |
286 size_t MaxPartialTextureUpdates() const; | 273 size_t MaxPartialTextureUpdates() const; |
287 bool RequestPartialTextureUpdate(); | 274 bool RequestPartialTextureUpdate(); |
288 | 275 |
289 void SetDeviceScaleFactor(float device_scale_factor); | 276 void SetDeviceScaleFactor(float device_scale_factor); |
290 float device_scale_factor() const { return device_scale_factor_; } | 277 float device_scale_factor() const { return device_scale_factor_; } |
291 | 278 |
292 void UpdateTopControlsState(TopControlsState constraints, | 279 void UpdateTopControlsState(TopControlsState constraints, |
293 TopControlsState current, | 280 TopControlsState current, |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
410 | 397 |
411 const LayerTreeSettings settings_; | 398 const LayerTreeSettings settings_; |
412 LayerTreeDebugState debug_state_; | 399 LayerTreeDebugState debug_state_; |
413 | 400 |
414 gfx::Size device_viewport_size_; | 401 gfx::Size device_viewport_size_; |
415 float overdraw_bottom_height_; | 402 float overdraw_bottom_height_; |
416 float device_scale_factor_; | 403 float device_scale_factor_; |
417 | 404 |
418 bool visible_; | 405 bool visible_; |
419 | 406 |
420 typedef base::hash_map<WebKit::WebGraphicsContext3D*, | 407 base::OneShotTimer<LayerTreeHost> rate_limit_timer_; |
421 scoped_refptr<RateLimiter> > RateLimiterMap; | |
422 RateLimiterMap rate_limiters_; | |
423 | 408 |
424 float page_scale_factor_; | 409 float page_scale_factor_; |
425 float min_page_scale_factor_; | 410 float min_page_scale_factor_; |
426 float max_page_scale_factor_; | 411 float max_page_scale_factor_; |
427 gfx::Transform impl_transform_; | 412 gfx::Transform impl_transform_; |
428 bool trigger_idle_updates_; | 413 bool trigger_idle_updates_; |
429 | 414 |
430 SkColor background_color_; | 415 SkColor background_color_; |
431 bool has_transparent_background_; | 416 bool has_transparent_background_; |
432 | 417 |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
473 scoped_refptr<Layer> outer_viewport_scroll_layer_; | 458 scoped_refptr<Layer> outer_viewport_scroll_layer_; |
474 | 459 |
475 SharedBitmapManager* shared_bitmap_manager_; | 460 SharedBitmapManager* shared_bitmap_manager_; |
476 | 461 |
477 DISALLOW_COPY_AND_ASSIGN(LayerTreeHost); | 462 DISALLOW_COPY_AND_ASSIGN(LayerTreeHost); |
478 }; | 463 }; |
479 | 464 |
480 } // namespace cc | 465 } // namespace cc |
481 | 466 |
482 #endif // CC_TREES_LAYER_TREE_HOST_H_ | 467 #endif // CC_TREES_LAYER_TREE_HOST_H_ |
OLD | NEW |