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

Side by Side Diff: cc/trees/property_tree.cc

Issue 1736073002: cc: Move SyncedScrollOffset to scroll tree (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase and add comment Created 4 years, 9 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 unified diff | Download patch
« no previous file with comments | « cc/trees/property_tree.h ('k') | cc/trees/property_tree_builder.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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;
1303 // layer_id_to_scroll_offset_map_ is intentionally omitted in operator=,
1304 // because we do not want to simply copy the map when property tree is
1305 // propagating from pending to active.
1306 // In the main to pending case, we do want to copy it, but this can be done by
1307 // calling UpdateScrollOffsetMap after the assignment;
1308 // In the other case, we want pending and active property trees to share the
1309 // same map.
1310 return *this;
1311 }
1312
1294 bool ScrollTree::operator==(const ScrollTree& other) const { 1313 bool ScrollTree::operator==(const ScrollTree& other) const {
1295 return PropertyTree::operator==(other) && 1314 const ScrollTree::ScrollOffsetMap& other_scroll_offset_map =
1296 CurrentlyScrollingNode() == other.CurrentlyScrollingNode(); 1315 other.scroll_offset_map();
1316 if (layer_id_to_scroll_offset_map_.size() != other_scroll_offset_map.size())
1317 return false;
1318
1319 for (auto map_entry : layer_id_to_scroll_offset_map_) {
1320 int key = map_entry.first;
1321 if (other_scroll_offset_map.find(key) == other_scroll_offset_map.end() ||
1322 map_entry.second != layer_id_to_scroll_offset_map_.at(key))
1323 return false;
1324 }
1325
1326 bool is_currently_scrolling_node_equal =
1327 (currently_scrolling_node_id_ == -1)
1328 ? (!other.CurrentlyScrollingNode())
1329 : (other.CurrentlyScrollingNode() &&
1330 currently_scrolling_node_id_ ==
1331 other.CurrentlyScrollingNode()->id);
1332
1333 return PropertyTree::operator==(other) && is_currently_scrolling_node_equal;
1297 } 1334 }
1298 1335
1299 void ScrollTree::ToProtobuf(proto::PropertyTree* proto) const { 1336 void ScrollTree::ToProtobuf(proto::PropertyTree* proto) const {
1300 DCHECK(!proto->has_property_type()); 1337 DCHECK(!proto->has_property_type());
1301 proto->set_property_type(proto::PropertyTree::Scroll); 1338 proto->set_property_type(proto::PropertyTree::Scroll);
1302 1339
1303 PropertyTree::ToProtobuf(proto); 1340 PropertyTree::ToProtobuf(proto);
1304 proto::ScrollTreeData* data = proto->mutable_scroll_tree_data(); 1341 proto::ScrollTreeData* data = proto->mutable_scroll_tree_data();
1305 1342
1306 data->set_currently_scrolling_node_id(currently_scrolling_node_id_); 1343 data->set_currently_scrolling_node_id(currently_scrolling_node_id_);
1344 for (auto i : layer_id_to_scroll_offset_map_) {
1345 data->add_layer_id_to_scroll_offset_map();
1346 proto::ScrollOffsetMapEntry* entry =
1347 data->mutable_layer_id_to_scroll_offset_map(
1348 data->layer_id_to_scroll_offset_map_size() - 1);
1349 entry->set_layer_id(i.first);
1350 SyncedScrollOffsetToProto(*i.second.get(), entry->mutable_scroll_offset());
1351 }
1307 } 1352 }
1308 1353
1309 void ScrollTree::FromProtobuf(const proto::PropertyTree& proto) { 1354 void ScrollTree::FromProtobuf(const proto::PropertyTree& proto) {
1310 DCHECK(proto.has_property_type()); 1355 DCHECK(proto.has_property_type());
1311 DCHECK_EQ(proto.property_type(), proto::PropertyTree::Scroll); 1356 DCHECK_EQ(proto.property_type(), proto::PropertyTree::Scroll);
1312 1357
1313 PropertyTree::FromProtobuf(proto); 1358 PropertyTree::FromProtobuf(proto);
1314 const proto::ScrollTreeData& data = proto.scroll_tree_data(); 1359 const proto::ScrollTreeData& data = proto.scroll_tree_data();
1315 1360
1316 currently_scrolling_node_id_ = data.currently_scrolling_node_id(); 1361 currently_scrolling_node_id_ = data.currently_scrolling_node_id();
1362
1363 for (int i = 0; i < data.layer_id_to_scroll_offset_map_size(); ++i) {
1364 const proto::ScrollOffsetMapEntry entry =
1365 data.layer_id_to_scroll_offset_map(i);
1366 layer_id_to_scroll_offset_map_[entry.layer_id()] = new SyncedScrollOffset();
1367 ProtoToSyncedScrollOffset(
1368 entry.scroll_offset(),
1369 layer_id_to_scroll_offset_map_[entry.layer_id()].get());
1370 }
1371 }
1372
1373 void ScrollTree::clear() {
1374 PropertyTree<ScrollNode>::clear();
1375
1376 if (property_trees()->is_main_thread) {
1377 currently_scrolling_node_id_ = -1;
1378 layer_id_to_scroll_offset_map_.clear();
1379 }
1317 } 1380 }
1318 1381
1319 gfx::ScrollOffset ScrollTree::MaxScrollOffset(int scroll_node_id) const { 1382 gfx::ScrollOffset ScrollTree::MaxScrollOffset(int scroll_node_id) const {
1320 const ScrollNode* scroll_node = Node(scroll_node_id); 1383 const ScrollNode* scroll_node = Node(scroll_node_id);
1321 gfx::SizeF scroll_bounds = gfx::SizeF(scroll_node->data.bounds.width(), 1384 gfx::SizeF scroll_bounds = gfx::SizeF(scroll_node->data.bounds.width(),
1322 scroll_node->data.bounds.height()); 1385 scroll_node->data.bounds.height());
1323 1386
1324 if (scroll_node->data.is_inner_viewport_scroll_layer) { 1387 if (scroll_node->data.is_inner_viewport_scroll_layer) {
1325 scroll_bounds.Enlarge( 1388 scroll_bounds.Enlarge(
1326 property_trees()->inner_viewport_scroll_bounds_delta().x(), 1389 property_trees()->inner_viewport_scroll_bounds_delta().x(),
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
1392 property_trees()->transform_tree.Node(scroll_node->data.transform_id); 1455 property_trees()->transform_tree.Node(scroll_node->data.transform_id);
1393 gfx::Transform screen_space_transform( 1456 gfx::Transform screen_space_transform(
1394 1, 0, 0, 1, scroll_node->data.offset_to_transform_parent.x(), 1457 1, 0, 0, 1, scroll_node->data.offset_to_transform_parent.x(),
1395 scroll_node->data.offset_to_transform_parent.y()); 1458 scroll_node->data.offset_to_transform_parent.y());
1396 screen_space_transform.ConcatTransform(transform_node->data.to_screen); 1459 screen_space_transform.ConcatTransform(transform_node->data.to_screen);
1397 if (scroll_node->data.should_flatten) 1460 if (scroll_node->data.should_flatten)
1398 screen_space_transform.FlattenTo2d(); 1461 screen_space_transform.FlattenTo2d();
1399 return screen_space_transform; 1462 return screen_space_transform;
1400 } 1463 }
1401 1464
1465 // TODO(sunxd): Make this function private once scroll offset access is fully
1466 // directed to scroll tree.
1467 SyncedScrollOffset* ScrollTree::synced_scroll_offset(int layer_id) {
1468 if (layer_id_to_scroll_offset_map_.find(layer_id) ==
1469 layer_id_to_scroll_offset_map_.end()) {
1470 layer_id_to_scroll_offset_map_[layer_id] = new SyncedScrollOffset;
1471 }
1472 return layer_id_to_scroll_offset_map_[layer_id].get();
1473 }
1474
1475 gfx::ScrollOffset ScrollTree::PullDeltaForMainThread(
1476 SyncedScrollOffset* scroll_offset) {
1477 // TODO(miletus): Remove all this temporary flooring machinery when
1478 // Blink fully supports fractional scrolls.
1479 gfx::ScrollOffset current_offset =
1480 scroll_offset->Current(property_trees()->is_active);
1481 gfx::ScrollOffset current_delta = property_trees()->is_active
1482 ? scroll_offset->Delta()
1483 : scroll_offset->PendingDelta().get();
1484 gfx::ScrollOffset floored_delta(floor(current_delta.x()),
1485 floor(current_delta.y()));
1486 gfx::ScrollOffset diff_delta = floored_delta - current_delta;
1487 gfx::ScrollOffset tmp_offset = current_offset + diff_delta;
1488 scroll_offset->SetCurrent(tmp_offset);
1489 gfx::ScrollOffset delta = scroll_offset->PullDeltaForMainThread();
1490 scroll_offset->SetCurrent(current_offset);
1491 return delta;
1492 }
1493
1494 void ScrollTree::CollectScrollDeltas(ScrollAndScaleSet* scroll_info) {
1495 for (auto map_entry : layer_id_to_scroll_offset_map_) {
1496 gfx::ScrollOffset scroll_delta =
1497 PullDeltaForMainThread(map_entry.second.get());
1498
1499 if (!scroll_delta.IsZero()) {
1500 LayerTreeHostCommon::ScrollUpdateInfo scroll;
1501 scroll.layer_id = map_entry.first;
1502 scroll.scroll_delta = gfx::Vector2d(scroll_delta.x(), scroll_delta.y());
1503 scroll_info->scrolls.push_back(scroll);
1504 }
1505 }
1506 }
1507
1508 void ScrollTree::UpdateScrollOffsetMapEntry(
1509 int key,
1510 ScrollTree::ScrollOffsetMap* new_scroll_offset_map,
1511 LayerTreeImpl* layer_tree_impl) {
1512 bool changed = false;
1513 // If we are pushing scroll offset from main to pending tree, we create a new
1514 // instance of synced scroll offset; if we are pushing from pending to active,
1515 // we reuse the pending tree's value in the map.
1516 if (!property_trees()->is_active) {
1517 changed = synced_scroll_offset(key)->PushFromMainThread(
1518 new_scroll_offset_map->at(key)->PendingBase());
1519
1520 if (new_scroll_offset_map->at(key)->clobber_active_value()) {
1521 synced_scroll_offset(key)->set_clobber_active_value();
1522 }
1523 if (changed)
1524 layer_tree_impl->LayerById(key)->DidUpdateScrollOffset();
1525 } else {
1526 layer_id_to_scroll_offset_map_[key] = new_scroll_offset_map->at(key);
1527 changed |= synced_scroll_offset(key)->PushPendingToActive();
1528 if (changed)
1529 layer_tree_impl->LayerById(key)->DidUpdateScrollOffset();
1530 }
1531 }
1532
1533 void ScrollTree::UpdateScrollOffsetMap(
1534 ScrollTree::ScrollOffsetMap* new_scroll_offset_map,
1535 LayerTreeImpl* layer_tree_impl) {
1536 if (layer_tree_impl && layer_tree_impl->root_layer()) {
1537 DCHECK(!property_trees()->is_main_thread);
1538 for (auto map_entry = layer_id_to_scroll_offset_map_.begin();
1539 map_entry != layer_id_to_scroll_offset_map_.end();) {
1540 int key = map_entry->first;
1541 if (new_scroll_offset_map->find(key) != new_scroll_offset_map->end()) {
1542 UpdateScrollOffsetMapEntry(key, new_scroll_offset_map, layer_tree_impl);
1543 ++map_entry;
1544 } else {
1545 map_entry = layer_id_to_scroll_offset_map_.erase(map_entry);
1546 }
1547 }
1548
1549 for (auto& map_entry : *new_scroll_offset_map) {
1550 int key = map_entry.first;
1551 if (layer_id_to_scroll_offset_map_.find(key) ==
1552 layer_id_to_scroll_offset_map_.end())
1553 UpdateScrollOffsetMapEntry(key, new_scroll_offset_map, layer_tree_impl);
1554 }
1555 }
1556 }
1557
1558 ScrollTree::ScrollOffsetMap& ScrollTree::scroll_offset_map() {
1559 return layer_id_to_scroll_offset_map_;
1560 }
1561
1562 const ScrollTree::ScrollOffsetMap& ScrollTree::scroll_offset_map() const {
1563 return layer_id_to_scroll_offset_map_;
1564 }
1565
1566 void ScrollTree::ApplySentScrollDeltasFromAbortedCommit() {
1567 DCHECK(property_trees()->is_active);
1568 for (auto& map_entry : layer_id_to_scroll_offset_map_)
1569 map_entry.second->AbortCommit();
1570 }
1571
1572 bool ScrollTree::SetScrollOffset(int layer_id,
1573 const gfx::ScrollOffset& scroll_offset) {
1574 if (property_trees()->is_main_thread)
1575 return synced_scroll_offset(layer_id)->PushFromMainThread(scroll_offset);
1576 else if (property_trees()->is_active)
1577 return synced_scroll_offset(layer_id)->SetCurrent(scroll_offset);
1578 return false;
1579 }
1580
1402 PropertyTrees::PropertyTrees() 1581 PropertyTrees::PropertyTrees()
1403 : needs_rebuild(true), 1582 : needs_rebuild(true),
1404 non_root_surfaces_enabled(true), 1583 non_root_surfaces_enabled(true),
1405 changed(false), 1584 changed(false),
1406 full_tree_damaged(false), 1585 full_tree_damaged(false),
1407 sequence_number(0) { 1586 sequence_number(0),
1587 is_main_thread(true),
1588 is_active(false) {
1408 transform_tree.SetPropertyTrees(this); 1589 transform_tree.SetPropertyTrees(this);
1409 effect_tree.SetPropertyTrees(this); 1590 effect_tree.SetPropertyTrees(this);
1410 clip_tree.SetPropertyTrees(this); 1591 clip_tree.SetPropertyTrees(this);
1411 scroll_tree.SetPropertyTrees(this); 1592 scroll_tree.SetPropertyTrees(this);
1412 } 1593 }
1413 1594
1414 PropertyTrees::~PropertyTrees() {} 1595 PropertyTrees::~PropertyTrees() {}
1415 1596
1416 bool PropertyTrees::operator==(const PropertyTrees& other) const { 1597 bool PropertyTrees::operator==(const PropertyTrees& other) const {
1417 return transform_tree == other.transform_tree && 1598 return transform_tree == other.transform_tree &&
1418 effect_tree == other.effect_tree && clip_tree == other.clip_tree && 1599 effect_tree == other.effect_tree && clip_tree == other.clip_tree &&
1419 scroll_tree == other.scroll_tree && 1600 scroll_tree == other.scroll_tree &&
1420 needs_rebuild == other.needs_rebuild && changed == other.changed && 1601 needs_rebuild == other.needs_rebuild && changed == other.changed &&
1421 full_tree_damaged == other.full_tree_damaged && 1602 full_tree_damaged == other.full_tree_damaged &&
1603 is_main_thread == other.is_main_thread &&
1604 is_active == other.is_active &&
1422 non_root_surfaces_enabled == other.non_root_surfaces_enabled && 1605 non_root_surfaces_enabled == other.non_root_surfaces_enabled &&
1423 sequence_number == other.sequence_number; 1606 sequence_number == other.sequence_number;
1424 } 1607 }
1425 1608
1426 PropertyTrees& PropertyTrees::operator=(const PropertyTrees& from) { 1609 PropertyTrees& PropertyTrees::operator=(const PropertyTrees& from) {
1427 transform_tree = from.transform_tree; 1610 transform_tree = from.transform_tree;
1428 effect_tree = from.effect_tree; 1611 effect_tree = from.effect_tree;
1429 clip_tree = from.clip_tree; 1612 clip_tree = from.clip_tree;
1430 scroll_tree = from.scroll_tree; 1613 scroll_tree = from.scroll_tree;
1431 needs_rebuild = from.needs_rebuild; 1614 needs_rebuild = from.needs_rebuild;
1432 changed = from.changed; 1615 changed = from.changed;
1433 full_tree_damaged = from.full_tree_damaged; 1616 full_tree_damaged = from.full_tree_damaged;
1434 non_root_surfaces_enabled = from.non_root_surfaces_enabled; 1617 non_root_surfaces_enabled = from.non_root_surfaces_enabled;
1435 sequence_number = from.sequence_number; 1618 sequence_number = from.sequence_number;
1619 is_main_thread = from.is_main_thread;
1620 is_active = from.is_active;
1436 inner_viewport_container_bounds_delta_ = 1621 inner_viewport_container_bounds_delta_ =
1437 from.inner_viewport_container_bounds_delta(); 1622 from.inner_viewport_container_bounds_delta();
1438 outer_viewport_container_bounds_delta_ = 1623 outer_viewport_container_bounds_delta_ =
1439 from.outer_viewport_container_bounds_delta(); 1624 from.outer_viewport_container_bounds_delta();
1440 inner_viewport_scroll_bounds_delta_ = 1625 inner_viewport_scroll_bounds_delta_ =
1441 from.inner_viewport_scroll_bounds_delta(); 1626 from.inner_viewport_scroll_bounds_delta();
1442 transform_tree.SetPropertyTrees(this); 1627 transform_tree.SetPropertyTrees(this);
1443 effect_tree.SetPropertyTrees(this); 1628 effect_tree.SetPropertyTrees(this);
1444 clip_tree.SetPropertyTrees(this); 1629 clip_tree.SetPropertyTrees(this);
1445 scroll_tree.SetPropertyTrees(this); 1630 scroll_tree.SetPropertyTrees(this);
1446 return *this; 1631 return *this;
1447 } 1632 }
1448 1633
1449 void PropertyTrees::ToProtobuf(proto::PropertyTrees* proto) const { 1634 void PropertyTrees::ToProtobuf(proto::PropertyTrees* proto) const {
1450 // TODO(khushalsagar): Add support for sending diffs when serializaing 1635 // TODO(khushalsagar): Add support for sending diffs when serializaing
1451 // property trees. See crbug/555370. 1636 // property trees. See crbug/555370.
1452 transform_tree.ToProtobuf(proto->mutable_transform_tree()); 1637 transform_tree.ToProtobuf(proto->mutable_transform_tree());
1453 effect_tree.ToProtobuf(proto->mutable_effect_tree()); 1638 effect_tree.ToProtobuf(proto->mutable_effect_tree());
1454 clip_tree.ToProtobuf(proto->mutable_clip_tree()); 1639 clip_tree.ToProtobuf(proto->mutable_clip_tree());
1455 scroll_tree.ToProtobuf(proto->mutable_scroll_tree()); 1640 scroll_tree.ToProtobuf(proto->mutable_scroll_tree());
1456 proto->set_needs_rebuild(needs_rebuild); 1641 proto->set_needs_rebuild(needs_rebuild);
1457 proto->set_changed(changed); 1642 proto->set_changed(changed);
1458 proto->set_full_tree_damaged(full_tree_damaged); 1643 proto->set_full_tree_damaged(full_tree_damaged);
1459 proto->set_non_root_surfaces_enabled(non_root_surfaces_enabled); 1644 proto->set_non_root_surfaces_enabled(non_root_surfaces_enabled);
1645 proto->set_is_main_thread(is_main_thread);
1646 proto->set_is_active(is_active);
1460 1647
1461 // TODO(khushalsagar): Consider using the sequence number to decide if 1648 // TODO(khushalsagar): Consider using the sequence number to decide if
1462 // property trees need to be serialized again for a commit. See crbug/555370. 1649 // property trees need to be serialized again for a commit. See crbug/555370.
1463 proto->set_sequence_number(sequence_number); 1650 proto->set_sequence_number(sequence_number);
1464 } 1651 }
1465 1652
1466 // static 1653 // static
1467 void PropertyTrees::FromProtobuf(const proto::PropertyTrees& proto) { 1654 void PropertyTrees::FromProtobuf(const proto::PropertyTrees& proto) {
1468 transform_tree.FromProtobuf(proto.transform_tree()); 1655 transform_tree.FromProtobuf(proto.transform_tree());
1469 effect_tree.FromProtobuf(proto.effect_tree()); 1656 effect_tree.FromProtobuf(proto.effect_tree());
1470 clip_tree.FromProtobuf(proto.clip_tree()); 1657 clip_tree.FromProtobuf(proto.clip_tree());
1471 scroll_tree.FromProtobuf(proto.scroll_tree()); 1658 scroll_tree.FromProtobuf(proto.scroll_tree());
1472 1659
1473 needs_rebuild = proto.needs_rebuild(); 1660 needs_rebuild = proto.needs_rebuild();
1474 changed = proto.changed(); 1661 changed = proto.changed();
1475 full_tree_damaged = proto.full_tree_damaged(); 1662 full_tree_damaged = proto.full_tree_damaged();
1476 non_root_surfaces_enabled = proto.non_root_surfaces_enabled(); 1663 non_root_surfaces_enabled = proto.non_root_surfaces_enabled();
1477 sequence_number = proto.sequence_number(); 1664 sequence_number = proto.sequence_number();
1665 is_main_thread = proto.is_main_thread();
1666 is_active = proto.is_active();
1478 1667
1479 transform_tree.SetPropertyTrees(this); 1668 transform_tree.SetPropertyTrees(this);
1480 effect_tree.SetPropertyTrees(this); 1669 effect_tree.SetPropertyTrees(this);
1481 clip_tree.SetPropertyTrees(this); 1670 clip_tree.SetPropertyTrees(this);
1482 scroll_tree.SetPropertyTrees(this); 1671 scroll_tree.SetPropertyTrees(this);
1483 } 1672 }
1484 1673
1485 void PropertyTrees::SetInnerViewportContainerBoundsDelta( 1674 void PropertyTrees::SetInnerViewportContainerBoundsDelta(
1486 gfx::Vector2dF bounds_delta) { 1675 gfx::Vector2dF bounds_delta) {
1487 if (inner_viewport_container_bounds_delta_ == bounds_delta) 1676 if (inner_viewport_container_bounds_delta_ == bounds_delta)
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1533 break; 1722 break;
1534 case ALL_TREES: 1723 case ALL_TREES:
1535 transform_tree.ResetChangeTracking(); 1724 transform_tree.ResetChangeTracking();
1536 effect_tree.ResetChangeTracking(); 1725 effect_tree.ResetChangeTracking();
1537 } 1726 }
1538 changed = false; 1727 changed = false;
1539 full_tree_damaged = false; 1728 full_tree_damaged = false;
1540 } 1729 }
1541 1730
1542 } // namespace cc 1731 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/property_tree.h ('k') | cc/trees/property_tree_builder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698