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 #include "cc/trees/layer_tree_host_impl.h" | 5 #include "cc/trees/layer_tree_host_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/json/json_writer.h" | 10 #include "base/json/json_writer.h" |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 Proxy* proxy, | 158 Proxy* proxy, |
159 RenderingStatsInstrumentation* rendering_stats_instrumentation) | 159 RenderingStatsInstrumentation* rendering_stats_instrumentation) |
160 : client_(client), | 160 : client_(client), |
161 proxy_(proxy), | 161 proxy_(proxy), |
162 input_handler_client_(NULL), | 162 input_handler_client_(NULL), |
163 did_lock_scrolling_layer_(false), | 163 did_lock_scrolling_layer_(false), |
164 should_bubble_scrolls_(false), | 164 should_bubble_scrolls_(false), |
165 wheel_scrolling_(false), | 165 wheel_scrolling_(false), |
166 root_layer_scroll_offset_delegate_(NULL), | 166 root_layer_scroll_offset_delegate_(NULL), |
167 settings_(settings), | 167 settings_(settings), |
168 overdraw_bottom_height_(0.f), | |
169 device_scale_factor_(1.f), | |
170 visible_(true), | 168 visible_(true), |
171 managed_memory_policy_( | 169 managed_memory_policy_( |
172 PrioritizedResourceManager::DefaultMemoryAllocationLimit(), | 170 PrioritizedResourceManager::DefaultMemoryAllocationLimit(), |
173 ManagedMemoryPolicy::CUTOFF_ALLOW_EVERYTHING, | 171 ManagedMemoryPolicy::CUTOFF_ALLOW_EVERYTHING, |
174 0, | 172 0, |
175 ManagedMemoryPolicy::CUTOFF_ALLOW_NOTHING), | 173 ManagedMemoryPolicy::CUTOFF_ALLOW_NOTHING), |
176 pinch_gesture_active_(false), | 174 pinch_gesture_active_(false), |
177 fps_counter_(FrameRateCounter::Create(proxy_->HasImplThread())), | 175 fps_counter_(FrameRateCounter::Create(proxy_->HasImplThread())), |
178 paint_time_counter_(PaintTimeCounter::Create()), | 176 paint_time_counter_(PaintTimeCounter::Create()), |
179 memory_history_(MemoryHistory::Create()), | 177 memory_history_(MemoryHistory::Create()), |
180 debug_rect_history_(DebugRectHistory::Create()), | 178 debug_rect_history_(DebugRectHistory::Create()), |
181 max_memory_needed_bytes_(0), | 179 max_memory_needed_bytes_(0), |
182 last_sent_memory_visible_bytes_(0), | 180 last_sent_memory_visible_bytes_(0), |
183 last_sent_memory_visible_and_nearby_bytes_(0), | 181 last_sent_memory_visible_and_nearby_bytes_(0), |
184 last_sent_memory_use_bytes_(0), | 182 last_sent_memory_use_bytes_(0), |
| 183 device_scale_factor_(1.f), |
| 184 overdraw_bottom_height_(0.f), |
185 animation_registrar_(AnimationRegistrar::Create()), | 185 animation_registrar_(AnimationRegistrar::Create()), |
186 rendering_stats_instrumentation_(rendering_stats_instrumentation) { | 186 rendering_stats_instrumentation_(rendering_stats_instrumentation) { |
187 DCHECK(proxy_->IsImplThread()); | 187 DCHECK(proxy_->IsImplThread()); |
188 DidVisibilityChange(this, visible_); | 188 DidVisibilityChange(this, visible_); |
189 | 189 |
190 SetDebugState(settings.initial_debug_state); | 190 SetDebugState(settings.initial_debug_state); |
191 | 191 |
192 if (settings.calculate_top_controls_position) { | 192 if (settings.calculate_top_controls_position) { |
193 top_controls_manager_ = | 193 top_controls_manager_ = |
194 TopControlsManager::Create(this, | 194 TopControlsManager::Create(this, |
(...skipping 838 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1033 EnforceManagedMemoryPolicy(ActualManagedMemoryPolicy()); | 1033 EnforceManagedMemoryPolicy(ActualManagedMemoryPolicy()); |
1034 } else { | 1034 } else { |
1035 DCHECK(proxy_->IsImplThread()); | 1035 DCHECK(proxy_->IsImplThread()); |
1036 EnforceManagedMemoryPolicy(ActualManagedMemoryPolicy()); | 1036 EnforceManagedMemoryPolicy(ActualManagedMemoryPolicy()); |
1037 } | 1037 } |
1038 | 1038 |
1039 if (needs_commit) | 1039 if (needs_commit) |
1040 client_->SetNeedsCommitOnImplThread(); | 1040 client_->SetNeedsCommitOnImplThread(); |
1041 } | 1041 } |
1042 | 1042 |
| 1043 void LayerTreeHostImpl::SetExternalDrawConstraints( |
| 1044 const gfx::Transform& transform, |
| 1045 gfx::Rect viewport) { |
| 1046 external_transform_ = transform; |
| 1047 external_viewport_ = viewport; |
| 1048 } |
| 1049 |
1043 void LayerTreeHostImpl::SetNeedsRedrawRect(gfx::Rect damage_rect) { | 1050 void LayerTreeHostImpl::SetNeedsRedrawRect(gfx::Rect damage_rect) { |
1044 client_->SetNeedsRedrawRectOnImplThread(damage_rect); | 1051 client_->SetNeedsRedrawRectOnImplThread(damage_rect); |
1045 } | 1052 } |
1046 | 1053 |
1047 void LayerTreeHostImpl::OnVSyncParametersChanged(base::TimeTicks timebase, | 1054 void LayerTreeHostImpl::OnVSyncParametersChanged(base::TimeTicks timebase, |
1048 base::TimeDelta interval) { | 1055 base::TimeDelta interval) { |
1049 client_->OnVSyncParametersChanged(timebase, interval); | 1056 client_->OnVSyncParametersChanged(timebase, interval); |
1050 } | 1057 } |
1051 | 1058 |
1052 void LayerTreeHostImpl::BeginFrame(base::TimeTicks frame_time) { | 1059 void LayerTreeHostImpl::BeginFrame(base::TimeTicks frame_time) { |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1214 renderer_->SwapBuffers(frame.latency_info); | 1221 renderer_->SwapBuffers(frame.latency_info); |
1215 active_tree_->ClearLatencyInfo(); | 1222 active_tree_->ClearLatencyInfo(); |
1216 return true; | 1223 return true; |
1217 } | 1224 } |
1218 | 1225 |
1219 void LayerTreeHostImpl::SetNeedsBeginFrame(bool enable) { | 1226 void LayerTreeHostImpl::SetNeedsBeginFrame(bool enable) { |
1220 if (output_surface_) | 1227 if (output_surface_) |
1221 output_surface_->SetNeedsBeginFrame(enable); | 1228 output_surface_->SetNeedsBeginFrame(enable); |
1222 } | 1229 } |
1223 | 1230 |
1224 gfx::Size LayerTreeHostImpl::DeviceViewportSize() const { | |
1225 return device_viewport_size(); | |
1226 } | |
1227 | |
1228 float LayerTreeHostImpl::DeviceScaleFactor() const { | 1231 float LayerTreeHostImpl::DeviceScaleFactor() const { |
1229 return device_scale_factor_; | 1232 return device_scale_factor_; |
1230 } | 1233 } |
1231 | 1234 |
1232 gfx::SizeF LayerTreeHostImpl::VisibleViewportSize() const { | 1235 gfx::SizeF LayerTreeHostImpl::VisibleViewportSize() const { |
1233 gfx::SizeF dip_size = | 1236 gfx::SizeF dip_size = |
1234 gfx::ScaleSize(DeviceViewportSize(), 1.f / device_scale_factor()); | 1237 gfx::ScaleSize(device_viewport_size(), 1.f / device_scale_factor()); |
1235 | 1238 |
1236 // The clip layer should be used if non-overlay scrollbars may exist since | 1239 // The clip layer should be used if non-overlay scrollbars may exist since |
1237 // it adjusts for them. | 1240 // it adjusts for them. |
1238 LayerImpl* clip_layer = active_tree_->RootClipLayer(); | 1241 LayerImpl* clip_layer = active_tree_->RootClipLayer(); |
1239 if (!Settings().solid_color_scrollbars && clip_layer && | 1242 if (!Settings().solid_color_scrollbars && clip_layer && |
1240 clip_layer->masks_to_bounds()) | 1243 clip_layer->masks_to_bounds()) |
1241 dip_size = clip_layer->bounds(); | 1244 dip_size = clip_layer->bounds(); |
1242 | 1245 |
1243 float top_offset = | 1246 float top_offset = |
1244 top_controls_manager_ ? top_controls_manager_->content_top_offset() : 0.f; | 1247 top_controls_manager_ ? top_controls_manager_->content_top_offset() : 0.f; |
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1546 return; | 1549 return; |
1547 device_scale_factor_ = device_scale_factor; | 1550 device_scale_factor_ = device_scale_factor; |
1548 | 1551 |
1549 if (renderer_) | 1552 if (renderer_) |
1550 renderer_->ViewportChanged(); | 1553 renderer_->ViewportChanged(); |
1551 | 1554 |
1552 UpdateMaxScrollOffset(); | 1555 UpdateMaxScrollOffset(); |
1553 SetFullRootLayerDamage(); | 1556 SetFullRootLayerDamage(); |
1554 } | 1557 } |
1555 | 1558 |
| 1559 gfx::Rect LayerTreeHostImpl::DeviceViewport() const { |
| 1560 if (external_viewport_.IsEmpty()) |
| 1561 return gfx::Rect(device_viewport_size_); |
| 1562 |
| 1563 return external_viewport_; |
| 1564 } |
| 1565 |
| 1566 const gfx::Transform& LayerTreeHostImpl::DeviceTransform() const { |
| 1567 return external_transform_; |
| 1568 } |
| 1569 |
1556 void LayerTreeHostImpl::UpdateMaxScrollOffset() { | 1570 void LayerTreeHostImpl::UpdateMaxScrollOffset() { |
1557 active_tree_->UpdateMaxScrollOffset(); | 1571 active_tree_->UpdateMaxScrollOffset(); |
1558 } | 1572 } |
1559 | 1573 |
1560 void LayerTreeHostImpl::DidChangeTopControlsPosition() { | 1574 void LayerTreeHostImpl::DidChangeTopControlsPosition() { |
1561 client_->SetNeedsRedrawOnImplThread(); | 1575 client_->SetNeedsRedrawOnImplThread(); |
1562 active_tree_->set_needs_update_draw_properties(); | 1576 active_tree_->set_needs_update_draw_properties(); |
1563 SetFullRootLayerDamage(); | 1577 SetFullRootLayerDamage(); |
1564 } | 1578 } |
1565 | 1579 |
(...skipping 696 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2262 } | 2276 } |
2263 | 2277 |
2264 void LayerTreeHostImpl::SetDebugState(const LayerTreeDebugState& debug_state) { | 2278 void LayerTreeHostImpl::SetDebugState(const LayerTreeDebugState& debug_state) { |
2265 if (debug_state_.continuous_painting != debug_state.continuous_painting) | 2279 if (debug_state_.continuous_painting != debug_state.continuous_painting) |
2266 paint_time_counter_->ClearHistory(); | 2280 paint_time_counter_->ClearHistory(); |
2267 | 2281 |
2268 debug_state_ = debug_state; | 2282 debug_state_ = debug_state; |
2269 } | 2283 } |
2270 | 2284 |
2271 } // namespace cc | 2285 } // namespace cc |
OLD | NEW |