| 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/resources/tile_manager.h" | 5 #include "cc/resources/tile_manager.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 502 | 502 |
| 503 all_tiles_that_need_to_be_rasterized_have_memory_ = true; | 503 all_tiles_that_need_to_be_rasterized_have_memory_ = true; |
| 504 all_tiles_required_for_activation_have_memory_ = true; | 504 all_tiles_required_for_activation_have_memory_ = true; |
| 505 all_tiles_required_for_activation_have_been_initialized_ = true; | 505 all_tiles_required_for_activation_have_been_initialized_ = true; |
| 506 | 506 |
| 507 // Cast to prevent overflow. | 507 // Cast to prevent overflow. |
| 508 int64 bytes_available = | 508 int64 bytes_available = |
| 509 static_cast<int64>(bytes_releasable) + | 509 static_cast<int64>(bytes_releasable) + |
| 510 static_cast<int64>(global_state_.memory_limit_in_bytes) - | 510 static_cast<int64>(global_state_.memory_limit_in_bytes) - |
| 511 static_cast<int64>(resource_pool_->acquired_memory_usage_bytes()); | 511 static_cast<int64>(resource_pool_->acquired_memory_usage_bytes()); |
| 512 int resources_available = resources_releasable + | 512 int resources_available = |
| 513 global_state_.num_resources_limit - | 513 resources_releasable + |
| 514 resource_pool_->NumResources(); | 514 global_state_.num_resources_limit - |
| 515 resource_pool_->acquired_resource_count(); |
| 515 | 516 |
| 516 size_t bytes_allocatable = | 517 size_t bytes_allocatable = |
| 517 std::max(static_cast<int64>(0), bytes_available); | 518 std::max(static_cast<int64>(0), bytes_available); |
| 518 size_t resources_allocatable = std::max(0, resources_available); | 519 size_t resources_allocatable = std::max(0, resources_available); |
| 519 | 520 |
| 520 size_t bytes_that_exceeded_memory_budget = 0; | 521 size_t bytes_that_exceeded_memory_budget = 0; |
| 521 size_t bytes_left = bytes_allocatable; | 522 size_t bytes_left = bytes_allocatable; |
| 522 size_t resources_left = resources_allocatable; | 523 size_t resources_left = resources_allocatable; |
| 523 bool oomed = false; | 524 bool oomed = false; |
| 524 | 525 |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 702 | 703 |
| 703 DCHECK(tile_version.requires_resource()); | 704 DCHECK(tile_version.requires_resource()); |
| 704 DCHECK(!tile_version.resource_); | 705 DCHECK(!tile_version.resource_); |
| 705 | 706 |
| 706 if (tile_version.raster_task_.is_null()) | 707 if (tile_version.raster_task_.is_null()) |
| 707 tile_version.raster_task_ = CreateRasterTask(tile); | 708 tile_version.raster_task_ = CreateRasterTask(tile); |
| 708 | 709 |
| 709 tasks.Append(tile_version.raster_task_, tile->required_for_activation()); | 710 tasks.Append(tile_version.raster_task_, tile->required_for_activation()); |
| 710 } | 711 } |
| 711 | 712 |
| 713 // We must reduce the amount of unused memory before calling |
| 714 // ScheduleTasks to prevent usage from rising above limit. |
| 715 resource_pool_->ReduceMemoryUsage(); |
| 716 |
| 712 // Schedule running of |tasks|. This replaces any previously | 717 // Schedule running of |tasks|. This replaces any previously |
| 713 // scheduled tasks and effectively cancels all tasks not present | 718 // scheduled tasks and effectively cancels all tasks not present |
| 714 // in |tasks|. | 719 // in |tasks|. |
| 715 raster_worker_pool_->ScheduleTasks(&tasks); | 720 raster_worker_pool_->ScheduleTasks(&tasks); |
| 716 } | 721 } |
| 717 | 722 |
| 718 RasterWorkerPool::Task TileManager::CreateImageDecodeTask( | 723 RasterWorkerPool::Task TileManager::CreateImageDecodeTask( |
| 719 Tile* tile, skia::LazyPixelRef* pixel_ref) { | 724 Tile* tile, skia::LazyPixelRef* pixel_ref) { |
| 720 return RasterWorkerPool::CreateImageDecodeTask( | 725 return RasterWorkerPool::CreateImageDecodeTask( |
| 721 pixel_ref, | 726 pixel_ref, |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 838 tile_version.set_use_resource(); | 843 tile_version.set_use_resource(); |
| 839 tile_version.resource_ = resource.Pass(); | 844 tile_version.resource_ = resource.Pass(); |
| 840 } | 845 } |
| 841 | 846 |
| 842 FreeUnusedResourcesForTile(tile); | 847 FreeUnusedResourcesForTile(tile); |
| 843 if (tile->priority(ACTIVE_TREE).distance_to_visible_in_pixels == 0) | 848 if (tile->priority(ACTIVE_TREE).distance_to_visible_in_pixels == 0) |
| 844 did_initialize_visible_tile_ = true; | 849 did_initialize_visible_tile_ = true; |
| 845 } | 850 } |
| 846 | 851 |
| 847 } // namespace cc | 852 } // namespace cc |
| OLD | NEW |