diff options
author | vmpstr@chromium.org <vmpstr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-13 17:32:54 +0000 |
---|---|---|
committer | vmpstr@chromium.org <vmpstr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-13 17:32:54 +0000 |
commit | cb563fc32f3cc084d4454f95b6e6ab9281af5ad2 (patch) | |
tree | b04fec3ff9b98a84595d2eeeab4bb023ce452d9c /cc/resources | |
parent | 61a85f474124c99fefe4fcc87e19dc26e549dd12 (diff) | |
download | chromium_src-cb563fc32f3cc084d4454f95b6e6ab9281af5ad2.zip chromium_src-cb563fc32f3cc084d4454f95b6e6ab9281af5ad2.tar.gz chromium_src-cb563fc32f3cc084d4454f95b6e6ab9281af5ad2.tar.bz2 |
cc: Fix memory leak in cc_perftests.
This patch fixes a memory leak in the cc_perftests. When we assign
memory to tiles, if we use ManageTiles call then we also create
raster tasks which causes a memory leak in resources acquired.
BUG=317970, 317969
R=reveman@chromium.org, epenner@chromium.org
Review URL: https://codereview.chromium.org/68173006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@234840 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/resources')
-rw-r--r-- | cc/resources/tile_manager.h | 12 | ||||
-rw-r--r-- | cc/resources/tile_manager_unittest.cc | 24 |
2 files changed, 24 insertions, 12 deletions
diff --git a/cc/resources/tile_manager.h b/cc/resources/tile_manager.h index 2975f79..6b8b707 100644 --- a/cc/resources/tile_manager.h +++ b/cc/resources/tile_manager.h @@ -105,6 +105,18 @@ class CC_EXPORT TileManager : public RasterWorkerPoolClient, return raster_worker_pool_.get(); } + void SetGlobalStateForTesting( + const GlobalStateThatImpactsTilePriority& state) { + if (state != global_state_) { + global_state_ = state; + prioritized_tiles_dirty_ = true; + resource_pool_->SetResourceUsageLimits( + global_state_.memory_limit_in_bytes, + global_state_.unused_memory_limit_in_bytes, + global_state_.num_resources_limit); + } + } + protected: TileManager(TileManagerClient* client, ResourceProvider* resource_provider, diff --git a/cc/resources/tile_manager_unittest.cc b/cc/resources/tile_manager_unittest.cc index 4a070a8..f253292 100644 --- a/cc/resources/tile_manager_unittest.cc +++ b/cc/resources/tile_manager_unittest.cc @@ -50,7 +50,7 @@ class TileManagerTest : public testing::TestWithParam<bool> { state.tree_priority = tree_priority; global_state_ = state; - tile_manager_->ManageTiles(state); + tile_manager_->SetGlobalStateForTesting(state); picture_pile_ = FakePicturePileImpl::CreatePile(); } @@ -342,7 +342,7 @@ TEST_P(TileManagerTest, RasterAsLCD) { TileVector pending_tree_tiles = CreateTiles(5, TilePriority(), TilePriorityForNowBin()); - tile_manager()->ManageTiles(global_state_); + tile_manager()->AssignMemoryToTiles(global_state_); EXPECT_EQ(5, TilesWithLCDCount(active_tree_tiles)); EXPECT_EQ(5, TilesWithLCDCount(pending_tree_tiles)); @@ -366,7 +366,7 @@ TEST_P(TileManagerTest, RasterAsNoLCD) { (*it)->set_can_use_lcd_text(false); } - tile_manager()->ManageTiles(global_state_); + tile_manager()->AssignMemoryToTiles(global_state_); EXPECT_EQ(0, TilesWithLCDCount(active_tree_tiles)); EXPECT_EQ(0, TilesWithLCDCount(pending_tree_tiles)); @@ -379,7 +379,7 @@ TEST_P(TileManagerTest, ReRasterAsNoLCD) { TileVector pending_tree_tiles = CreateTiles(5, TilePriority(), TilePriorityForNowBin()); - tile_manager()->ManageTiles(global_state_); + tile_manager()->AssignMemoryToTiles(global_state_); EXPECT_EQ(5, TilesWithLCDCount(active_tree_tiles)); EXPECT_EQ(5, TilesWithLCDCount(pending_tree_tiles)); @@ -395,7 +395,7 @@ TEST_P(TileManagerTest, ReRasterAsNoLCD) { (*it)->set_can_use_lcd_text(false); } - tile_manager()->ManageTiles(global_state_); + tile_manager()->AssignMemoryToTiles(global_state_); EXPECT_EQ(0, TilesWithLCDCount(active_tree_tiles)); EXPECT_EQ(0, TilesWithLCDCount(pending_tree_tiles)); @@ -408,7 +408,7 @@ TEST_P(TileManagerTest, NoTextDontReRasterAsNoLCD) { TileVector pending_tree_tiles = CreateTiles(5, TilePriority(), TilePriorityForNowBin()); - tile_manager()->ManageTiles(global_state_); + tile_manager()->AssignMemoryToTiles(global_state_); EXPECT_EQ(5, TilesWithLCDCount(active_tree_tiles)); EXPECT_EQ(5, TilesWithLCDCount(pending_tree_tiles)); @@ -432,7 +432,7 @@ TEST_P(TileManagerTest, NoTextDontReRasterAsNoLCD) { EXPECT_TRUE((*it)->IsReadyToDraw()); } - tile_manager()->ManageTiles(global_state_); + tile_manager()->AssignMemoryToTiles(global_state_); EXPECT_EQ(5, TilesWithLCDCount(active_tree_tiles)); EXPECT_EQ(5, TilesWithLCDCount(pending_tree_tiles)); @@ -445,7 +445,7 @@ TEST_P(TileManagerTest, TextReRasterAsNoLCD) { TileVector pending_tree_tiles = CreateTiles(5, TilePriority(), TilePriorityForNowBin()); - tile_manager()->ManageTiles(global_state_); + tile_manager()->AssignMemoryToTiles(global_state_); EXPECT_EQ(5, TilesWithLCDCount(active_tree_tiles)); EXPECT_EQ(5, TilesWithLCDCount(pending_tree_tiles)); @@ -474,7 +474,7 @@ TEST_P(TileManagerTest, TextReRasterAsNoLCD) { EXPECT_TRUE((*it)->IsReadyToDraw()); } - tile_manager()->ManageTiles(global_state_); + tile_manager()->AssignMemoryToTiles(global_state_); EXPECT_EQ(0, TilesWithLCDCount(active_tree_tiles)); EXPECT_EQ(0, TilesWithLCDCount(pending_tree_tiles)); @@ -490,7 +490,7 @@ TEST_P(TileManagerTest, RespectMemoryLimit) { size_t memory_allocated_bytes; size_t memory_used_bytes; - tile_manager()->ManageTiles(global_state_); + tile_manager()->AssignMemoryToTiles(global_state_); tile_manager()->GetMemoryStats(&memory_required_bytes, &memory_nice_to_have_bytes, &memory_allocated_bytes, @@ -502,7 +502,7 @@ TEST_P(TileManagerTest, RespectMemoryLimit) { tile_manager()->UpdateVisibleTiles(); // Remove all large tiles. This will leave the memory currently - // used by these tiles as unused when ManageTiles() is called. + // used by these tiles as unused when AssignMemoryToTiles() is called. large_tiles.clear(); // Create a new set of tiles using a different size. These tiles @@ -511,7 +511,7 @@ TEST_P(TileManagerTest, RespectMemoryLimit) { TileVector small_tiles = CreateTilesWithSize( 5, TilePriorityForNowBin(), TilePriority(), gfx::Size(128, 128)); - tile_manager()->ManageTiles(global_state_); + tile_manager()->AssignMemoryToTiles(global_state_); tile_manager()->GetMemoryStats(&memory_required_bytes, &memory_nice_to_have_bytes, &memory_allocated_bytes, |