| 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_
|
|
|