| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/picture_layer_tiling.h" | 5 #include "cc/picture_layer_tiling.h" |
| 6 | 6 |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 | 8 |
| 9 #include "base/debug/trace_event.h" | 9 #include "base/debug/trace_event.h" |
| 10 #include "cc/math_util.h" | 10 #include "cc/math_util.h" |
| (...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 380 prioritized_rect); | 380 prioritized_rect); |
| 381 iter; | 381 iter; |
| 382 ++iter) { | 382 ++iter) { |
| 383 TileMap::iterator find = tiles_.find(iter.index()); | 383 TileMap::iterator find = tiles_.find(iter.index()); |
| 384 if (find == tiles_.end()) | 384 if (find == tiles_.end()) |
| 385 continue; | 385 continue; |
| 386 | 386 |
| 387 TilePriority priority; | 387 TilePriority priority; |
| 388 DCHECK(!priority.is_live); | 388 DCHECK(!priority.is_live); |
| 389 Tile* tile = find->second.get(); | 389 Tile* tile = find->second.get(); |
| 390 tile->set_priority(tree, priority); | 390 tile->SetPriority(tree, priority); |
| 391 } | 391 } |
| 392 last_prioritized_rect_ = prioritized_rect; | 392 last_prioritized_rect_ = prioritized_rect; |
| 393 | 393 |
| 394 gfx::Rect view_rect(device_viewport); | 394 gfx::Rect view_rect(device_viewport); |
| 395 float current_scale = current_layer_contents_scale / contents_scale_; | 395 float current_scale = current_layer_contents_scale / contents_scale_; |
| 396 float last_scale = last_layer_contents_scale / contents_scale_; | 396 float last_scale = last_layer_contents_scale / contents_scale_; |
| 397 | 397 |
| 398 // Fast path tile priority calculation when both transforms are translations. | 398 // Fast path tile priority calculation when both transforms are translations. |
| 399 if (last_screen_transform.IsIdentityOrTranslation() && | 399 if (last_screen_transform.IsIdentityOrTranslation() && |
| 400 current_screen_transform.IsIdentityOrTranslation()) | 400 current_screen_transform.IsIdentityOrTranslation()) |
| (...skipping 28 matching lines...) Expand all Loading... |
| 429 | 429 |
| 430 float time_to_visible_in_seconds = | 430 float time_to_visible_in_seconds = |
| 431 TilePriority::TimeForBoundsToIntersect( | 431 TilePriority::TimeForBoundsToIntersect( |
| 432 last_screen_rect, current_screen_rect, time_delta, view_rect); | 432 last_screen_rect, current_screen_rect, time_delta, view_rect); |
| 433 TilePriority priority( | 433 TilePriority priority( |
| 434 resolution_, | 434 resolution_, |
| 435 time_to_visible_in_seconds, | 435 time_to_visible_in_seconds, |
| 436 distance_to_visible_in_pixels); | 436 distance_to_visible_in_pixels); |
| 437 if (store_screen_space_quads_on_tiles) | 437 if (store_screen_space_quads_on_tiles) |
| 438 priority.set_current_screen_quad(gfx::QuadF(current_screen_rect)); | 438 priority.set_current_screen_quad(gfx::QuadF(current_screen_rect)); |
| 439 tile->set_priority(tree, priority); | 439 tile->SetPriority(tree, priority); |
| 440 } | 440 } |
| 441 } else { | 441 } else { |
| 442 for (TilingData::Iterator iter(&tiling_data_, prioritized_rect); | 442 for (TilingData::Iterator iter(&tiling_data_, prioritized_rect); |
| 443 iter; ++iter) { | 443 iter; ++iter) { |
| 444 TileMap::iterator find = tiles_.find(iter.index()); | 444 TileMap::iterator find = tiles_.find(iter.index()); |
| 445 if (find == tiles_.end()) | 445 if (find == tiles_.end()) |
| 446 continue; | 446 continue; |
| 447 Tile* tile = find->second.get(); | 447 Tile* tile = find->second.get(); |
| 448 | 448 |
| 449 gfx::Rect tile_bounds = | 449 gfx::Rect tile_bounds = |
| (...skipping 22 matching lines...) Expand all Loading... |
| 472 resolution_, | 472 resolution_, |
| 473 time_to_visible_in_seconds, | 473 time_to_visible_in_seconds, |
| 474 distance_to_visible_in_pixels); | 474 distance_to_visible_in_pixels); |
| 475 if (store_screen_space_quads_on_tiles) { | 475 if (store_screen_space_quads_on_tiles) { |
| 476 bool clipped; | 476 bool clipped; |
| 477 priority.set_current_screen_quad( | 477 priority.set_current_screen_quad( |
| 478 MathUtil::mapQuad(current_screen_transform, | 478 MathUtil::mapQuad(current_screen_transform, |
| 479 gfx::QuadF(current_layer_content_rect), | 479 gfx::QuadF(current_layer_content_rect), |
| 480 clipped)); | 480 clipped)); |
| 481 } | 481 } |
| 482 tile->set_priority(tree, priority); | 482 tile->SetPriority(tree, priority); |
| 483 } | 483 } |
| 484 } | 484 } |
| 485 | 485 |
| 486 last_source_frame_number_ = current_source_frame_number; | 486 last_source_frame_number_ = current_source_frame_number; |
| 487 last_impl_frame_time_ = current_frame_time; | 487 last_impl_frame_time_ = current_frame_time; |
| 488 } | 488 } |
| 489 | 489 |
| 490 void PictureLayerTiling::DidBecomeActive() { | 490 void PictureLayerTiling::DidBecomeActive() { |
| 491 for (TileMap::const_iterator it = tiles_.begin(); it != tiles_.end(); ++it) { | 491 for (TileMap::const_iterator it = tiles_.begin(); it != tiles_.end(); ++it) { |
| 492 it->second->set_priority(ACTIVE_TREE, it->second->priority(PENDING_TREE)); | 492 it->second->SetPriority(ACTIVE_TREE, it->second->priority(PENDING_TREE)); |
| 493 it->second->set_priority(PENDING_TREE, TilePriority()); | 493 it->second->SetPriority(PENDING_TREE, TilePriority()); |
| 494 | 494 |
| 495 // Tile holds a ref onto a picture pile. If the tile never gets invalidated | 495 // Tile holds a ref onto a picture pile. If the tile never gets invalidated |
| 496 // and recreated, then that picture pile ref could exist indefinitely. To | 496 // and recreated, then that picture pile ref could exist indefinitely. To |
| 497 // prevent this, ask the client to update the pile to its own ref. This | 497 // prevent this, ask the client to update the pile to its own ref. This |
| 498 // will cause PicturePileImpls and their clones to get deleted once the | 498 // will cause PicturePileImpls and their clones to get deleted once the |
| 499 // corresponding PictureLayerImpl and any in flight raster jobs go out of | 499 // corresponding PictureLayerImpl and any in flight raster jobs go out of |
| 500 // scope. | 500 // scope. |
| 501 client_->UpdatePile(it->second); | 501 client_->UpdatePile(it->second); |
| 502 } | 502 } |
| 503 } | 503 } |
| (...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 714 (bottom_complete ? 1 : 0); | 714 (bottom_complete ? 1 : 0); |
| 715 if (num_edges_complete == 4) | 715 if (num_edges_complete == 4) |
| 716 return working_rect; | 716 return working_rect; |
| 717 } | 717 } |
| 718 | 718 |
| 719 NOTREACHED(); | 719 NOTREACHED(); |
| 720 return starting_rect; | 720 return starting_rect; |
| 721 } | 721 } |
| 722 | 722 |
| 723 } // namespace cc | 723 } // namespace cc |
| OLD | NEW |