Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <stddef.h> | 5 #include <stddef.h> |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| 11 #include "cc/base/math_util.h" | 11 #include "cc/base/math_util.h" |
| 12 #include "cc/input/main_thread_scrolling_reason.h" | 12 #include "cc/input/main_thread_scrolling_reason.h" |
| 13 #include "cc/layers/layer_impl.h" | |
| 13 #include "cc/proto/gfx_conversions.h" | 14 #include "cc/proto/gfx_conversions.h" |
| 14 #include "cc/proto/property_tree.pb.h" | 15 #include "cc/proto/property_tree.pb.h" |
| 15 #include "cc/proto/scroll_offset.pb.h" | 16 #include "cc/proto/scroll_offset.pb.h" |
| 17 #include "cc/proto/synced_property_conversions.h" | |
| 16 #include "cc/proto/transform.pb.h" | 18 #include "cc/proto/transform.pb.h" |
| 17 #include "cc/proto/vector2df.pb.h" | 19 #include "cc/proto/vector2df.pb.h" |
| 20 #include "cc/trees/layer_tree_host_common.h" | |
| 21 #include "cc/trees/layer_tree_impl.h" | |
| 18 #include "cc/trees/property_tree.h" | 22 #include "cc/trees/property_tree.h" |
| 19 #include "ui/gfx/geometry/vector2d_conversions.h" | 23 #include "ui/gfx/geometry/vector2d_conversions.h" |
| 20 | 24 |
| 21 namespace cc { | 25 namespace cc { |
| 22 | 26 |
| 23 template <typename T> | 27 template <typename T> |
| 24 bool TreeNode<T>::operator==(const TreeNode<T>& other) const { | 28 bool TreeNode<T>::operator==(const TreeNode<T>& other) const { |
| 25 return id == other.id && parent_id == other.parent_id && | 29 return id == other.id && parent_id == other.parent_id && |
| 26 owner_id == other.owner_id && data == other.data; | 30 owner_id == other.owner_id && data == other.data; |
| 27 } | 31 } |
| (...skipping 1252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1280 PropertyTree::ToProtobuf(proto); | 1284 PropertyTree::ToProtobuf(proto); |
| 1281 } | 1285 } |
| 1282 | 1286 |
| 1283 void EffectTree::FromProtobuf(const proto::PropertyTree& proto) { | 1287 void EffectTree::FromProtobuf(const proto::PropertyTree& proto) { |
| 1284 DCHECK(proto.has_property_type()); | 1288 DCHECK(proto.has_property_type()); |
| 1285 DCHECK_EQ(proto.property_type(), proto::PropertyTree::Effect); | 1289 DCHECK_EQ(proto.property_type(), proto::PropertyTree::Effect); |
| 1286 | 1290 |
| 1287 PropertyTree::FromProtobuf(proto); | 1291 PropertyTree::FromProtobuf(proto); |
| 1288 } | 1292 } |
| 1289 | 1293 |
| 1290 ScrollTree::ScrollTree() : currently_scrolling_node_id_(-1) {} | 1294 ScrollTree::ScrollTree() |
| 1295 : currently_scrolling_node_id_(-1), | |
| 1296 layer_id_to_scroll_offset_map_(ScrollTree::ScrollOffsetMap()) {} | |
| 1291 | 1297 |
| 1292 ScrollTree::~ScrollTree() {} | 1298 ScrollTree::~ScrollTree() {} |
| 1293 | 1299 |
| 1300 ScrollTree& ScrollTree::operator=(const ScrollTree& from) { | |
| 1301 PropertyTree::operator=(from); | |
| 1302 currently_scrolling_node_id_ = -1; | |
|
ajuma
2016/03/02 18:43:10
The layer_id_to_scroll_offset_map_ is intentionall
sunxd
2016/03/02 20:52:55
Done.
| |
| 1303 return *this; | |
| 1304 } | |
| 1305 | |
| 1294 bool ScrollTree::operator==(const ScrollTree& other) const { | 1306 bool ScrollTree::operator==(const ScrollTree& other) const { |
| 1295 return PropertyTree::operator==(other) && | 1307 const ScrollTree::ScrollOffsetMap& other_scroll_offset_map = |
| 1296 CurrentlyScrollingNode() == other.CurrentlyScrollingNode(); | 1308 other.scroll_offset_map(); |
| 1309 if (layer_id_to_scroll_offset_map_.size() != other_scroll_offset_map.size()) | |
| 1310 return false; | |
| 1311 | |
| 1312 for (auto map_entry : layer_id_to_scroll_offset_map_) { | |
| 1313 int key = map_entry.first; | |
| 1314 if (other_scroll_offset_map.find(key) == other_scroll_offset_map.end() || | |
| 1315 map_entry.second != layer_id_to_scroll_offset_map_.at(key)) | |
| 1316 return false; | |
| 1317 } | |
| 1318 | |
| 1319 bool is_currently_scrolling_node_equal = | |
| 1320 (currently_scrolling_node_id_ == -1) | |
| 1321 ? (!other.CurrentlyScrollingNode()) | |
| 1322 : (other.CurrentlyScrollingNode() && | |
| 1323 currently_scrolling_node_id_ == | |
| 1324 other.CurrentlyScrollingNode()->id); | |
| 1325 | |
| 1326 return PropertyTree::operator==(other) && is_currently_scrolling_node_equal; | |
| 1297 } | 1327 } |
| 1298 | 1328 |
| 1299 void ScrollTree::ToProtobuf(proto::PropertyTree* proto) const { | 1329 void ScrollTree::ToProtobuf(proto::PropertyTree* proto) const { |
| 1300 DCHECK(!proto->has_property_type()); | 1330 DCHECK(!proto->has_property_type()); |
| 1301 proto->set_property_type(proto::PropertyTree::Scroll); | 1331 proto->set_property_type(proto::PropertyTree::Scroll); |
| 1302 | 1332 |
| 1303 PropertyTree::ToProtobuf(proto); | 1333 PropertyTree::ToProtobuf(proto); |
| 1304 proto::ScrollTreeData* data = proto->mutable_scroll_tree_data(); | 1334 proto::ScrollTreeData* data = proto->mutable_scroll_tree_data(); |
| 1305 | 1335 |
| 1306 data->set_currently_scrolling_node_id(currently_scrolling_node_id_); | 1336 data->set_currently_scrolling_node_id(currently_scrolling_node_id_); |
| 1337 for (auto i : layer_id_to_scroll_offset_map_) { | |
| 1338 data->add_layer_id_to_scroll_offset_map(); | |
| 1339 proto::ScrollOffsetMapEntry* entry = | |
| 1340 data->mutable_layer_id_to_scroll_offset_map( | |
| 1341 data->layer_id_to_scroll_offset_map_size() - 1); | |
| 1342 entry->set_layer_id(i.first); | |
| 1343 SyncedScrollOffsetToProto(*i.second.get(), entry->mutable_scroll_offset()); | |
| 1344 } | |
| 1307 } | 1345 } |
| 1308 | 1346 |
| 1309 void ScrollTree::FromProtobuf(const proto::PropertyTree& proto) { | 1347 void ScrollTree::FromProtobuf(const proto::PropertyTree& proto) { |
| 1310 DCHECK(proto.has_property_type()); | 1348 DCHECK(proto.has_property_type()); |
| 1311 DCHECK_EQ(proto.property_type(), proto::PropertyTree::Scroll); | 1349 DCHECK_EQ(proto.property_type(), proto::PropertyTree::Scroll); |
| 1312 | 1350 |
| 1313 PropertyTree::FromProtobuf(proto); | 1351 PropertyTree::FromProtobuf(proto); |
| 1314 const proto::ScrollTreeData& data = proto.scroll_tree_data(); | 1352 const proto::ScrollTreeData& data = proto.scroll_tree_data(); |
| 1315 | 1353 |
| 1316 currently_scrolling_node_id_ = data.currently_scrolling_node_id(); | 1354 currently_scrolling_node_id_ = data.currently_scrolling_node_id(); |
| 1355 | |
| 1356 for (int i = 0; i < data.layer_id_to_scroll_offset_map_size(); ++i) { | |
| 1357 const proto::ScrollOffsetMapEntry entry = | |
| 1358 data.layer_id_to_scroll_offset_map(i); | |
| 1359 layer_id_to_scroll_offset_map_[entry.layer_id()] = new SyncedScrollOffset(); | |
| 1360 ProtoToSyncedScrollOffset( | |
| 1361 entry.scroll_offset(), | |
| 1362 layer_id_to_scroll_offset_map_[entry.layer_id()].get()); | |
| 1363 } | |
| 1364 } | |
| 1365 | |
| 1366 void ScrollTree::clear() { | |
| 1367 PropertyTree<ScrollNode>::clear(); | |
| 1368 | |
| 1369 if (property_trees()->is_main_thread) { | |
| 1370 currently_scrolling_node_id_ = -1; | |
| 1371 layer_id_to_scroll_offset_map_.clear(); | |
| 1372 } | |
| 1317 } | 1373 } |
| 1318 | 1374 |
| 1319 gfx::ScrollOffset ScrollTree::MaxScrollOffset(int scroll_node_id) const { | 1375 gfx::ScrollOffset ScrollTree::MaxScrollOffset(int scroll_node_id) const { |
| 1320 const ScrollNode* scroll_node = Node(scroll_node_id); | 1376 const ScrollNode* scroll_node = Node(scroll_node_id); |
| 1321 gfx::SizeF scroll_bounds = gfx::SizeF(scroll_node->data.bounds.width(), | 1377 gfx::SizeF scroll_bounds = gfx::SizeF(scroll_node->data.bounds.width(), |
| 1322 scroll_node->data.bounds.height()); | 1378 scroll_node->data.bounds.height()); |
| 1323 | 1379 |
| 1324 if (scroll_node->data.is_inner_viewport_scroll_layer) { | 1380 if (scroll_node->data.is_inner_viewport_scroll_layer) { |
| 1325 scroll_bounds.Enlarge( | 1381 scroll_bounds.Enlarge( |
| 1326 property_trees()->inner_viewport_scroll_bounds_delta().x(), | 1382 property_trees()->inner_viewport_scroll_bounds_delta().x(), |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1392 property_trees()->transform_tree.Node(scroll_node->data.transform_id); | 1448 property_trees()->transform_tree.Node(scroll_node->data.transform_id); |
| 1393 gfx::Transform screen_space_transform( | 1449 gfx::Transform screen_space_transform( |
| 1394 1, 0, 0, 1, scroll_node->data.offset_to_transform_parent.x(), | 1450 1, 0, 0, 1, scroll_node->data.offset_to_transform_parent.x(), |
| 1395 scroll_node->data.offset_to_transform_parent.y()); | 1451 scroll_node->data.offset_to_transform_parent.y()); |
| 1396 screen_space_transform.ConcatTransform(transform_node->data.to_screen); | 1452 screen_space_transform.ConcatTransform(transform_node->data.to_screen); |
| 1397 if (scroll_node->data.should_flatten) | 1453 if (scroll_node->data.should_flatten) |
| 1398 screen_space_transform.FlattenTo2d(); | 1454 screen_space_transform.FlattenTo2d(); |
| 1399 return screen_space_transform; | 1455 return screen_space_transform; |
| 1400 } | 1456 } |
| 1401 | 1457 |
| 1458 SyncedScrollOffset* ScrollTree::synced_scroll_offset(int layer_id) { | |
| 1459 if (layer_id_to_scroll_offset_map_.find(layer_id) == | |
| 1460 layer_id_to_scroll_offset_map_.end()) { | |
| 1461 layer_id_to_scroll_offset_map_[layer_id] = new SyncedScrollOffset; | |
| 1462 } | |
| 1463 return layer_id_to_scroll_offset_map_[layer_id].get(); | |
| 1464 } | |
| 1465 | |
| 1466 gfx::ScrollOffset ScrollTree::PullDeltaForMainThread( | |
| 1467 SyncedScrollOffset* scroll_offset) { | |
| 1468 // TODO(miletus): Remove all this temporary flooring machinery when | |
| 1469 // Blink fully supports fractional scrolls. | |
| 1470 gfx::ScrollOffset current_offset = | |
| 1471 scroll_offset->Current(property_trees()->is_active); | |
| 1472 gfx::ScrollOffset current_delta = property_trees()->is_active | |
| 1473 ? scroll_offset->Delta() | |
| 1474 : scroll_offset->PendingDelta().get(); | |
| 1475 gfx::ScrollOffset floored_delta(floor(current_delta.x()), | |
| 1476 floor(current_delta.y())); | |
| 1477 gfx::ScrollOffset diff_delta = floored_delta - current_delta; | |
| 1478 gfx::ScrollOffset tmp_offset = current_offset + diff_delta; | |
| 1479 scroll_offset->SetCurrent(tmp_offset); | |
| 1480 gfx::ScrollOffset delta = scroll_offset->PullDeltaForMainThread(); | |
| 1481 scroll_offset->SetCurrent(current_offset); | |
| 1482 return delta; | |
| 1483 } | |
| 1484 | |
| 1485 void ScrollTree::CollectScrollDeltas(ScrollAndScaleSet* scroll_info) { | |
| 1486 for (auto map_entry : layer_id_to_scroll_offset_map_) { | |
| 1487 gfx::ScrollOffset scroll_delta = | |
| 1488 PullDeltaForMainThread(map_entry.second.get()); | |
| 1489 | |
| 1490 if (!scroll_delta.IsZero()) { | |
| 1491 LayerTreeHostCommon::ScrollUpdateInfo scroll; | |
| 1492 scroll.layer_id = map_entry.first; | |
| 1493 scroll.scroll_delta = gfx::Vector2d(scroll_delta.x(), scroll_delta.y()); | |
| 1494 scroll_info->scrolls.push_back(scroll); | |
| 1495 } | |
| 1496 } | |
| 1497 } | |
| 1498 | |
| 1499 void ScrollTree::UpdateScrollOffsetMapEntry( | |
| 1500 int key, | |
| 1501 ScrollTree::ScrollOffsetMap* new_scroll_offset_map, | |
| 1502 LayerTreeImpl* layer_tree_impl) { | |
| 1503 bool changed = false; | |
| 1504 // If we are pushing scroll offset from main to pending tree, we create a new | |
| 1505 // instance of synced scroll offset; if we are pushing from pending to active, | |
| 1506 // we reuse the pending tree's value in the map. | |
| 1507 if (!property_trees()->is_active) { | |
| 1508 changed = synced_scroll_offset(key)->PushFromMainThread( | |
| 1509 new_scroll_offset_map->at(key)->PendingBase()); | |
| 1510 | |
| 1511 if (new_scroll_offset_map->at(key)->clobber_active_value()) { | |
| 1512 synced_scroll_offset(key)->set_clobber_active_value(); | |
| 1513 } | |
| 1514 if (changed) | |
| 1515 layer_tree_impl->LayerById(key)->DidUpdateScrollOffset(); | |
| 1516 } else { | |
| 1517 layer_id_to_scroll_offset_map_[key] = new_scroll_offset_map->at(key); | |
| 1518 changed |= synced_scroll_offset(key)->PushPendingToActive(); | |
| 1519 if (changed) | |
| 1520 layer_tree_impl->LayerById(key)->DidUpdateScrollOffset(); | |
| 1521 } | |
| 1522 } | |
| 1523 | |
| 1524 void ScrollTree::UpdateScrollOffsetMap( | |
| 1525 ScrollTree::ScrollOffsetMap* new_scroll_offset_map, | |
| 1526 LayerTreeImpl* layer_tree_impl) { | |
| 1527 if (layer_tree_impl && layer_tree_impl->root_layer()) { | |
| 1528 DCHECK(!property_trees()->is_main_thread); | |
| 1529 for (auto map_entry = layer_id_to_scroll_offset_map_.begin(); | |
| 1530 map_entry != layer_id_to_scroll_offset_map_.end();) { | |
| 1531 int key = map_entry->first; | |
| 1532 if (new_scroll_offset_map->find(key) != new_scroll_offset_map->end()) { | |
| 1533 UpdateScrollOffsetMapEntry(key, new_scroll_offset_map, layer_tree_impl); | |
| 1534 ++map_entry; | |
| 1535 } else { | |
| 1536 map_entry = layer_id_to_scroll_offset_map_.erase(map_entry); | |
| 1537 } | |
| 1538 } | |
| 1539 | |
| 1540 for (auto& map_entry : *new_scroll_offset_map) { | |
| 1541 int key = map_entry.first; | |
| 1542 if (layer_id_to_scroll_offset_map_.find(key) == | |
| 1543 layer_id_to_scroll_offset_map_.end()) | |
| 1544 UpdateScrollOffsetMapEntry(key, new_scroll_offset_map, layer_tree_impl); | |
| 1545 } | |
| 1546 } | |
| 1547 } | |
| 1548 | |
| 1549 ScrollTree::ScrollOffsetMap& ScrollTree::scroll_offset_map() { | |
| 1550 return layer_id_to_scroll_offset_map_; | |
| 1551 } | |
| 1552 | |
| 1553 const ScrollTree::ScrollOffsetMap& ScrollTree::scroll_offset_map() const { | |
| 1554 return layer_id_to_scroll_offset_map_; | |
| 1555 } | |
| 1556 | |
| 1557 void ScrollTree::ApplySentScrollDeltasFromAbortedCommit() { | |
| 1558 DCHECK(property_trees()->is_active); | |
| 1559 for (auto& map_entry : layer_id_to_scroll_offset_map_) | |
| 1560 map_entry.second->AbortCommit(); | |
| 1561 } | |
| 1562 | |
| 1563 bool ScrollTree::SetScrollOffset(int layer_id, | |
| 1564 const gfx::ScrollOffset& scroll_offset) { | |
| 1565 if (property_trees()->is_main_thread) | |
| 1566 return synced_scroll_offset(layer_id)->PushFromMainThread(scroll_offset); | |
| 1567 else if (property_trees()->is_active) | |
| 1568 return synced_scroll_offset(layer_id)->SetCurrent(scroll_offset); | |
| 1569 return false; | |
| 1570 } | |
| 1571 | |
| 1402 PropertyTrees::PropertyTrees() | 1572 PropertyTrees::PropertyTrees() |
| 1403 : needs_rebuild(true), | 1573 : needs_rebuild(true), |
| 1404 non_root_surfaces_enabled(true), | 1574 non_root_surfaces_enabled(true), |
| 1405 changed(false), | 1575 changed(false), |
| 1406 sequence_number(0) { | 1576 sequence_number(0), |
| 1577 is_main_thread(true), | |
| 1578 is_active(false) { | |
| 1407 transform_tree.SetPropertyTrees(this); | 1579 transform_tree.SetPropertyTrees(this); |
| 1408 effect_tree.SetPropertyTrees(this); | 1580 effect_tree.SetPropertyTrees(this); |
| 1409 clip_tree.SetPropertyTrees(this); | 1581 clip_tree.SetPropertyTrees(this); |
| 1410 scroll_tree.SetPropertyTrees(this); | 1582 scroll_tree.SetPropertyTrees(this); |
| 1411 } | 1583 } |
| 1412 | 1584 |
| 1413 PropertyTrees::~PropertyTrees() {} | 1585 PropertyTrees::~PropertyTrees() {} |
| 1414 | 1586 |
| 1415 bool PropertyTrees::operator==(const PropertyTrees& other) const { | 1587 bool PropertyTrees::operator==(const PropertyTrees& other) const { |
| 1416 return transform_tree == other.transform_tree && | 1588 return transform_tree == other.transform_tree && |
| 1417 effect_tree == other.effect_tree && clip_tree == other.clip_tree && | 1589 effect_tree == other.effect_tree && clip_tree == other.clip_tree && |
| 1418 scroll_tree == other.scroll_tree && | 1590 scroll_tree == other.scroll_tree && |
| 1419 needs_rebuild == other.needs_rebuild && changed == other.changed && | 1591 needs_rebuild == other.needs_rebuild && |
| 1592 is_main_thread == other.is_main_thread && | |
| 1593 is_active == other.is_active && | |
| 1420 non_root_surfaces_enabled == other.non_root_surfaces_enabled && | 1594 non_root_surfaces_enabled == other.non_root_surfaces_enabled && |
| 1421 sequence_number == other.sequence_number; | 1595 sequence_number == other.sequence_number; |
| 1422 } | 1596 } |
| 1423 | 1597 |
| 1424 PropertyTrees& PropertyTrees::operator=(const PropertyTrees& from) { | 1598 PropertyTrees& PropertyTrees::operator=(const PropertyTrees& from) { |
| 1425 transform_tree = from.transform_tree; | 1599 transform_tree = from.transform_tree; |
| 1426 effect_tree = from.effect_tree; | 1600 effect_tree = from.effect_tree; |
| 1427 clip_tree = from.clip_tree; | 1601 clip_tree = from.clip_tree; |
| 1428 scroll_tree = from.scroll_tree; | 1602 scroll_tree = from.scroll_tree; |
| 1429 needs_rebuild = from.needs_rebuild; | 1603 needs_rebuild = from.needs_rebuild; |
| 1430 changed = from.changed; | 1604 changed = from.changed; |
| 1431 non_root_surfaces_enabled = from.non_root_surfaces_enabled; | 1605 non_root_surfaces_enabled = from.non_root_surfaces_enabled; |
| 1432 sequence_number = from.sequence_number; | 1606 sequence_number = from.sequence_number; |
| 1607 is_main_thread = from.is_main_thread; | |
| 1608 is_active = from.is_active; | |
| 1433 inner_viewport_container_bounds_delta_ = | 1609 inner_viewport_container_bounds_delta_ = |
| 1434 from.inner_viewport_container_bounds_delta(); | 1610 from.inner_viewport_container_bounds_delta(); |
| 1435 outer_viewport_container_bounds_delta_ = | 1611 outer_viewport_container_bounds_delta_ = |
| 1436 from.outer_viewport_container_bounds_delta(); | 1612 from.outer_viewport_container_bounds_delta(); |
| 1437 inner_viewport_scroll_bounds_delta_ = | 1613 inner_viewport_scroll_bounds_delta_ = |
| 1438 from.inner_viewport_scroll_bounds_delta(); | 1614 from.inner_viewport_scroll_bounds_delta(); |
| 1439 transform_tree.SetPropertyTrees(this); | 1615 transform_tree.SetPropertyTrees(this); |
| 1440 effect_tree.SetPropertyTrees(this); | 1616 effect_tree.SetPropertyTrees(this); |
| 1441 clip_tree.SetPropertyTrees(this); | 1617 clip_tree.SetPropertyTrees(this); |
| 1442 scroll_tree.SetPropertyTrees(this); | 1618 scroll_tree.SetPropertyTrees(this); |
| 1443 return *this; | 1619 return *this; |
| 1444 } | 1620 } |
| 1445 | 1621 |
| 1446 void PropertyTrees::ToProtobuf(proto::PropertyTrees* proto) const { | 1622 void PropertyTrees::ToProtobuf(proto::PropertyTrees* proto) const { |
| 1447 // TODO(khushalsagar): Add support for sending diffs when serializaing | 1623 // TODO(khushalsagar): Add support for sending diffs when serializaing |
| 1448 // property trees. See crbug/555370. | 1624 // property trees. See crbug/555370. |
| 1449 transform_tree.ToProtobuf(proto->mutable_transform_tree()); | 1625 transform_tree.ToProtobuf(proto->mutable_transform_tree()); |
| 1450 effect_tree.ToProtobuf(proto->mutable_effect_tree()); | 1626 effect_tree.ToProtobuf(proto->mutable_effect_tree()); |
| 1451 clip_tree.ToProtobuf(proto->mutable_clip_tree()); | 1627 clip_tree.ToProtobuf(proto->mutable_clip_tree()); |
| 1452 scroll_tree.ToProtobuf(proto->mutable_scroll_tree()); | 1628 scroll_tree.ToProtobuf(proto->mutable_scroll_tree()); |
| 1453 proto->set_needs_rebuild(needs_rebuild); | 1629 proto->set_needs_rebuild(needs_rebuild); |
| 1454 proto->set_changed(changed); | 1630 proto->set_changed(changed); |
| 1455 proto->set_non_root_surfaces_enabled(non_root_surfaces_enabled); | 1631 proto->set_non_root_surfaces_enabled(non_root_surfaces_enabled); |
| 1632 proto->set_is_main_thread(is_main_thread); | |
| 1633 proto->set_is_active(is_active); | |
| 1456 | 1634 |
| 1457 // TODO(khushalsagar): Consider using the sequence number to decide if | 1635 // TODO(khushalsagar): Consider using the sequence number to decide if |
| 1458 // property trees need to be serialized again for a commit. See crbug/555370. | 1636 // property trees need to be serialized again for a commit. See crbug/555370. |
| 1459 proto->set_sequence_number(sequence_number); | 1637 proto->set_sequence_number(sequence_number); |
| 1460 } | 1638 } |
| 1461 | 1639 |
| 1462 // static | 1640 // static |
| 1463 void PropertyTrees::FromProtobuf(const proto::PropertyTrees& proto) { | 1641 void PropertyTrees::FromProtobuf(const proto::PropertyTrees& proto) { |
| 1464 transform_tree.FromProtobuf(proto.transform_tree()); | 1642 transform_tree.FromProtobuf(proto.transform_tree()); |
| 1465 effect_tree.FromProtobuf(proto.effect_tree()); | 1643 effect_tree.FromProtobuf(proto.effect_tree()); |
| 1466 clip_tree.FromProtobuf(proto.clip_tree()); | 1644 clip_tree.FromProtobuf(proto.clip_tree()); |
| 1467 scroll_tree.FromProtobuf(proto.scroll_tree()); | 1645 scroll_tree.FromProtobuf(proto.scroll_tree()); |
| 1468 | 1646 |
| 1469 needs_rebuild = proto.needs_rebuild(); | 1647 needs_rebuild = proto.needs_rebuild(); |
| 1470 changed = proto.changed(); | 1648 changed = proto.changed(); |
| 1471 non_root_surfaces_enabled = proto.non_root_surfaces_enabled(); | 1649 non_root_surfaces_enabled = proto.non_root_surfaces_enabled(); |
| 1472 sequence_number = proto.sequence_number(); | 1650 sequence_number = proto.sequence_number(); |
| 1651 is_main_thread = proto.is_main_thread(); | |
| 1652 is_active = proto.is_active(); | |
| 1473 | 1653 |
| 1474 transform_tree.SetPropertyTrees(this); | 1654 transform_tree.SetPropertyTrees(this); |
| 1475 effect_tree.SetPropertyTrees(this); | 1655 effect_tree.SetPropertyTrees(this); |
| 1476 clip_tree.SetPropertyTrees(this); | 1656 clip_tree.SetPropertyTrees(this); |
| 1477 scroll_tree.SetPropertyTrees(this); | 1657 scroll_tree.SetPropertyTrees(this); |
| 1478 } | 1658 } |
| 1479 | 1659 |
| 1480 void PropertyTrees::SetInnerViewportContainerBoundsDelta( | 1660 void PropertyTrees::SetInnerViewportContainerBoundsDelta( |
| 1481 gfx::Vector2dF bounds_delta) { | 1661 gfx::Vector2dF bounds_delta) { |
| 1482 if (inner_viewport_container_bounds_delta_ == bounds_delta) | 1662 if (inner_viewport_container_bounds_delta_ == bounds_delta) |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 1511 for (int id = 1; id < static_cast<int>(transform_tree.size()); ++id) { | 1691 for (int id = 1; id < static_cast<int>(transform_tree.size()); ++id) { |
| 1512 TransformNode* node = transform_tree.Node(id); | 1692 TransformNode* node = transform_tree.Node(id); |
| 1513 if (node->data.transform_changed) { | 1693 if (node->data.transform_changed) { |
| 1514 TransformNode* target_node = tree->transform_tree.Node(node->id); | 1694 TransformNode* target_node = tree->transform_tree.Node(node->id); |
| 1515 target_node->data.transform_changed = true; | 1695 target_node->data.transform_changed = true; |
| 1516 } | 1696 } |
| 1517 } | 1697 } |
| 1518 } | 1698 } |
| 1519 | 1699 |
| 1520 } // namespace cc | 1700 } // namespace cc |
| OLD | NEW |