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 #include <limits> | 8 #include <limits> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 1327 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1338 } | 1338 } |
1339 | 1339 |
1340 if (needs_commit) | 1340 if (needs_commit) |
1341 client_->SetNeedsCommitOnImplThread(); | 1341 client_->SetNeedsCommitOnImplThread(); |
1342 } | 1342 } |
1343 | 1343 |
1344 void LayerTreeHostImpl::SetExternalDrawConstraints( | 1344 void LayerTreeHostImpl::SetExternalDrawConstraints( |
1345 const gfx::Transform& transform, | 1345 const gfx::Transform& transform, |
1346 const gfx::Rect& viewport, | 1346 const gfx::Rect& viewport, |
1347 const gfx::Rect& clip, | 1347 const gfx::Rect& clip, |
1348 const gfx::Rect& device_rect_for_tiling, | |
1348 bool resourceless_software_draw) { | 1349 bool resourceless_software_draw) { |
1349 if (external_transform_ != transform || external_viewport_ != viewport || | 1350 if (external_transform_ != transform || external_viewport_ != viewport || |
1350 resourceless_software_draw_ != resourceless_software_draw) { | 1351 resourceless_software_draw_ != resourceless_software_draw) { |
1351 active_tree_->set_needs_update_draw_properties(); | 1352 active_tree_->set_needs_update_draw_properties(); |
1352 } | 1353 } |
1353 | 1354 |
1354 external_transform_ = transform; | |
1355 external_viewport_ = viewport; | 1355 external_viewport_ = viewport; |
1356 external_clip_ = clip; | 1356 external_clip_ = clip; |
1357 resourceless_software_draw_ = resourceless_software_draw; | 1357 resourceless_software_draw_ = resourceless_software_draw; |
1358 | |
1359 // |external_transform_| for Android WebView child compositor hardware draw | |
1360 // is an identity matrix. For software draw, |external_transform_| is what's | |
1361 // passed in. | |
1362 if (!resourceless_software_draw_) { | |
1363 external_transform_ = gfx::Transform(); | |
1364 external_viewport_rect_for_tiling_ = device_rect_for_tiling; | |
1365 external_transform_for_tiling_ = transform; | |
aelias_OOO_until_Jul13
2014/07/16 00:32:56
I find it confusing to repurpose the "transform" a
hush (inactive)
2014/07/16 20:45:32
I added external_tiling_transform as the parameter
| |
1366 } else { | |
1367 external_transform_ = transform; | |
1368 } | |
1358 } | 1369 } |
1359 | 1370 |
1360 void LayerTreeHostImpl::SetNeedsRedrawRect(const gfx::Rect& damage_rect) { | 1371 void LayerTreeHostImpl::SetNeedsRedrawRect(const gfx::Rect& damage_rect) { |
1361 if (damage_rect.IsEmpty()) | 1372 if (damage_rect.IsEmpty()) |
1362 return; | 1373 return; |
1363 NotifySwapPromiseMonitorsOfSetNeedsRedraw(); | 1374 NotifySwapPromiseMonitorsOfSetNeedsRedraw(); |
1364 client_->SetNeedsRedrawRectOnImplThread(damage_rect); | 1375 client_->SetNeedsRedrawRectOnImplThread(damage_rect); |
1365 } | 1376 } |
1366 | 1377 |
1367 void LayerTreeHostImpl::BeginFrame(const BeginFrameArgs& args) { | 1378 void LayerTreeHostImpl::BeginFrame(const BeginFrameArgs& args) { |
(...skipping 791 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2159 device_scale_factor_ = device_scale_factor; | 2170 device_scale_factor_ = device_scale_factor; |
2160 | 2171 |
2161 UpdateInnerViewportContainerSize(); | 2172 UpdateInnerViewportContainerSize(); |
2162 SetFullRootLayerDamage(); | 2173 SetFullRootLayerDamage(); |
2163 } | 2174 } |
2164 | 2175 |
2165 gfx::Size LayerTreeHostImpl::DrawViewportSize() const { | 2176 gfx::Size LayerTreeHostImpl::DrawViewportSize() const { |
2166 return DeviceViewport().size(); | 2177 return DeviceViewport().size(); |
2167 } | 2178 } |
2168 | 2179 |
2180 gfx::Rect LayerTreeHostImpl::TilingViewportRect() const { | |
2181 gfx::Rect empty; | |
2182 if (empty == external_viewport_rect_for_tiling_) | |
2183 return gfx::Rect(DrawViewportSize()); | |
2184 | |
2185 return external_viewport_rect_for_tiling_; | |
2186 } | |
2187 | |
2188 const gfx::Transform& LayerTreeHostImpl::TilingTransform() const { | |
2189 return external_transform_for_tiling_; | |
2190 } | |
2191 | |
2169 gfx::Rect LayerTreeHostImpl::DeviceViewport() const { | 2192 gfx::Rect LayerTreeHostImpl::DeviceViewport() const { |
2170 if (external_viewport_.IsEmpty()) | 2193 if (external_viewport_.IsEmpty()) |
2171 return gfx::Rect(device_viewport_size_); | 2194 return gfx::Rect(device_viewport_size_); |
2172 | 2195 |
2173 return external_viewport_; | 2196 return external_viewport_; |
2174 } | 2197 } |
2175 | 2198 |
2176 gfx::Rect LayerTreeHostImpl::DeviceClip() const { | 2199 gfx::Rect LayerTreeHostImpl::DeviceClip() const { |
2177 if (external_clip_.IsEmpty()) | 2200 if (external_clip_.IsEmpty()) |
2178 return DeviceViewport(); | 2201 return DeviceViewport(); |
(...skipping 1086 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3265 } | 3288 } |
3266 | 3289 |
3267 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { | 3290 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { |
3268 std::vector<PictureLayerImpl*>::iterator it = | 3291 std::vector<PictureLayerImpl*>::iterator it = |
3269 std::find(picture_layers_.begin(), picture_layers_.end(), layer); | 3292 std::find(picture_layers_.begin(), picture_layers_.end(), layer); |
3270 DCHECK(it != picture_layers_.end()); | 3293 DCHECK(it != picture_layers_.end()); |
3271 picture_layers_.erase(it); | 3294 picture_layers_.erase(it); |
3272 } | 3295 } |
3273 | 3296 |
3274 } // namespace cc | 3297 } // namespace cc |
OLD | NEW |