Index: cc/tiles/tile_task_manager.h |
diff --git a/cc/tiles/tile_task_manager.h b/cc/tiles/tile_task_manager.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e670b415602ad33e4e75111e982e5d843fcd7447 |
--- /dev/null |
+++ b/cc/tiles/tile_task_manager.h |
@@ -0,0 +1,72 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CC_TILES_TILE_TASK_MANAGER_H_ |
+#define CC_TILES_TILE_TASK_MANAGER_H_ |
+ |
+#include <stddef.h> |
+ |
+#include "cc/raster/raster_buffer_provider.h" |
+#include "cc/raster/task_graph_runner.h" |
+#include "cc/raster/tile_task.h" |
+ |
+namespace cc { |
+// This interface provides the wrapper over TaskGraphRunner for scheduling and |
+// collecting tasks. The client can call CheckForCompletedTasks() at any time to |
+// process all completed tasks at the moment that have finished running or |
+// cancelled. |
+class CC_EXPORT TileTaskManager { |
+ public: |
+ TileTaskManager(); |
+ virtual ~TileTaskManager(); |
+ |
+ // Schedule running of tile tasks in |graph| and all dependencies. |
+ // Previously scheduled tasks that are not in |graph| will be canceled unless |
+ // already running. Once scheduled, reply callbacks are guaranteed to run for |
+ // all tasks even if they later get canceled by another call to |
+ // ScheduleTasks(). |
+ virtual void ScheduleTasks(TaskGraph* graph) = 0; |
+ |
+ // Check for completed tasks and dispatch reply callbacks. |
+ virtual void CheckForCompletedTasks() = 0; |
+ |
+ // Shutdown after canceling all previously scheduled tasks. Reply callbacks |
+ // are still guaranteed to run when CheckForCompletedTasks() is called. |
+ virtual void Shutdown() = 0; |
+ |
+ // Get RasterBufferProvider. |
+ virtual RasterBufferProvider* GetRasterBufferProvider() const = 0; |
+}; |
+ |
+class CC_EXPORT TileTaskManagerImpl : public TileTaskManager { |
+ public: |
+ ~TileTaskManagerImpl() override; |
+ |
+ static std::unique_ptr<TileTaskManagerImpl> Create( |
+ std::unique_ptr<RasterBufferProvider> raster_buffer_provider, |
+ TaskGraphRunner* task_graph_runner); |
+ |
+ // Overridden from TileTaskManager: |
+ void ScheduleTasks(TaskGraph* graph) override; |
+ void CheckForCompletedTasks() override; |
+ void Shutdown() override; |
+ RasterBufferProvider* GetRasterBufferProvider() const override; |
+ |
+ protected: |
+ TileTaskManagerImpl( |
+ std::unique_ptr<RasterBufferProvider> raster_buffer_provider, |
+ TaskGraphRunner* task_graph_runner); |
+ |
+ std::unique_ptr<RasterBufferProvider> raster_buffer_provider_; |
+ TaskGraphRunner* task_graph_runner_; |
+ const NamespaceToken namespace_token_; |
+ Task::Vector completed_tasks_; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(TileTaskManagerImpl); |
+}; |
+ |
+} // namespace cc |
+ |
+#endif // CC_TILES_TILE_TASK_MANAGER_H_ |