Index: cc/tile_manager.h |
diff --git a/cc/tile_manager.h b/cc/tile_manager.h |
index 4a02dede82ae2c7e87a06bc0899e2af748db9bdb..403bc4e4a3feb633d0c5ca5c8c59b7ee940ea50e 100644 |
--- a/cc/tile_manager.h |
+++ b/cc/tile_manager.h |
@@ -10,6 +10,7 @@ |
#include "base/memory/scoped_ptr.h" |
#include "base/values.h" |
#include "cc/resource_pool.h" |
+#include "cc/scoped_ptr_deque.h" |
#include "cc/tile_priority.h" |
namespace base { |
@@ -62,6 +63,25 @@ class CC_EXPORT ManagedTileState { |
float time_to_needed_in_seconds; |
}; |
+class PendingSetPixels { |
+ public: |
+ PendingSetPixels(Tile*, scoped_ptr<ResourcePool::Resource>); |
+ ~PendingSetPixels(); |
+ |
+ Tile* tile() { return tile_.get(); } |
+ ResourcePool::Resource* resource() { return resource_.get(); } |
+ scoped_ptr<ResourcePool::Resource> takeResource() { |
+ return resource_.Pass(); |
+ } |
+ |
+ private: |
+ scoped_refptr<Tile> tile_; |
+ scoped_ptr<ResourcePool::Resource> resource_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(PendingSetPixels); |
+}; |
+ |
+ |
// This class manages tiles, deciding which should get rasterized and which |
// should no longer have any memory assigned to them. Tile objects are "owned" |
// by layers; they automatically register with the manager when they are |
@@ -77,6 +97,7 @@ class CC_EXPORT TileManager { |
void SetGlobalState(const GlobalStateThatImpactsTilePriority& state); |
void ManageTiles(); |
+ void PrepareToDraw(); |
void renderingStats(RenderingStats* stats); |
@@ -98,6 +119,7 @@ class CC_EXPORT TileManager { |
scoped_ptr<ResourcePool::Resource>, |
scoped_refptr<PicturePileImpl>, |
RenderingStats*); |
+ void CheckForPendingSetPixelsCompletion(); |
void DidFinishTileInitialization(Tile*, scoped_ptr<ResourcePool::Resource>); |
TileManagerClient* client_; |
@@ -106,6 +128,7 @@ class CC_EXPORT TileManager { |
int pending_raster_tasks_; |
size_t num_raster_threads_; |
scoped_refptr<base::SequencedWorkerPool> worker_pool_; |
+ bool in_prepare_to_draw_; |
GlobalStateThatImpactsTilePriority global_state_; |
@@ -113,7 +136,12 @@ class CC_EXPORT TileManager { |
TileVector tiles_; |
TileVector tiles_that_need_to_be_rasterized_; |
+ typedef ScopedPtrDeque<PendingSetPixels> PendingSetPixelsDeque; |
+ PendingSetPixelsDeque pending_set_pixels_; |
+ |
RenderingStats rendering_stats_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(TileManager); |
}; |
} // namespace cc |