| Index: cc/scheduler/scheduler.h
|
| diff --git a/cc/scheduler/scheduler.h b/cc/scheduler/scheduler.h
|
| index 230f20d0ec9f31a6c9134a7941ed8eb38ef7164f..d7129813248bed524d0a670ff4829c89c7028103 100644
|
| --- a/cc/scheduler/scheduler.h
|
| +++ b/cc/scheduler/scheduler.h
|
| @@ -8,6 +8,7 @@
|
| #include <string>
|
|
|
| #include "base/basictypes.h"
|
| +#include "base/cancelable_callback.h"
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/time/time.h"
|
| #include "cc/base/cc_export.h"
|
| @@ -20,34 +21,35 @@ namespace cc {
|
|
|
| class Thread;
|
|
|
| -struct ScheduledActionDrawAndSwapResult {
|
| - ScheduledActionDrawAndSwapResult()
|
| - : did_draw(false),
|
| - did_swap(false) {}
|
| - ScheduledActionDrawAndSwapResult(bool did_draw, bool did_swap)
|
| - : did_draw(did_draw),
|
| - did_swap(did_swap) {}
|
| +struct DrawSwapReadbackResult {
|
| + DrawSwapReadbackResult()
|
| + : did_draw(false), did_swap(false), did_readback(false) {}
|
| + DrawSwapReadbackResult(bool did_draw, bool did_swap, bool did_readback)
|
| + : did_draw(did_draw), did_swap(did_swap), did_readback(did_readback) {}
|
| bool did_draw;
|
| bool did_swap;
|
| + bool did_readback;
|
| };
|
|
|
| class SchedulerClient {
|
| public:
|
| virtual void SetNeedsBeginFrameOnImplThread(bool enable) = 0;
|
| virtual void ScheduledActionSendBeginFrameToMainThread() = 0;
|
| - virtual ScheduledActionDrawAndSwapResult
|
| - ScheduledActionDrawAndSwapIfPossible() = 0;
|
| - virtual ScheduledActionDrawAndSwapResult
|
| - ScheduledActionDrawAndSwapForced() = 0;
|
| + virtual DrawSwapReadbackResult ScheduledActionDrawAndSwapIfPossible() = 0;
|
| + virtual DrawSwapReadbackResult ScheduledActionDrawAndSwapForced() = 0;
|
| + virtual DrawSwapReadbackResult ScheduledActionDrawAndReadback() = 0;
|
| virtual void ScheduledActionCommit() = 0;
|
| virtual void ScheduledActionUpdateVisibleTiles() = 0;
|
| - virtual void ScheduledActionActivatePendingTreeIfNeeded() = 0;
|
| + virtual void ScheduledActionActivatePendingTree() = 0;
|
| virtual void ScheduledActionBeginOutputSurfaceCreation() = 0;
|
| virtual void ScheduledActionAcquireLayerTexturesForMainThread() = 0;
|
| virtual void DidAnticipatedDrawTimeChange(base::TimeTicks time) = 0;
|
| virtual base::TimeDelta DrawDurationEstimate() = 0;
|
| virtual base::TimeDelta BeginFrameToCommitDurationEstimate() = 0;
|
| virtual base::TimeDelta CommitToActivateDurationEstimate() = 0;
|
| + virtual void PostBeginFrameDeadline(const base::Closure& closure,
|
| + base::TimeTicks deadline) = 0;
|
| + virtual void DidBeginFrameDeadlineOnImplThread() = 0;
|
|
|
| protected:
|
| virtual ~SchedulerClient() {}
|
| @@ -67,22 +69,20 @@ class CC_EXPORT Scheduler {
|
|
|
| void SetVisible(bool visible);
|
| void SetCanDraw(bool can_draw);
|
| - void SetHasPendingTree(bool has_pending_tree);
|
| +
|
| + void NotifyReadyToActivate();
|
| + void SetHasTrees(bool has_pending_tree, bool active_tree_is_null);
|
|
|
| void SetNeedsCommit();
|
|
|
| // Like SetNeedsCommit(), but ensures a commit will definitely happen even if
|
| - // we are not visible.
|
| - void SetNeedsForcedCommit();
|
| + // we are not visible. Will eventually result in a forced draw internally.
|
| + void SetNeedsForcedCommitForReadback();
|
|
|
| void SetNeedsRedraw();
|
|
|
| void SetMainThreadNeedsLayerTextures();
|
|
|
| - // Like SetNeedsRedraw(), but ensures the draw will definitely happen even if
|
| - // we are not visible.
|
| - void SetNeedsForcedRedraw();
|
| -
|
| void DidSwapUseIncompleteTile();
|
|
|
| void FinishCommit();
|
| @@ -104,6 +104,7 @@ class CC_EXPORT Scheduler {
|
| base::TimeTicks LastBeginFrameOnImplThreadTime();
|
|
|
| void BeginFrame(const BeginFrameArgs& args);
|
| + void OnBeginFrameDeadline();
|
|
|
| std::string StateAsStringForTesting() { return state_machine_.ToString(); }
|
|
|
| @@ -111,6 +112,7 @@ class CC_EXPORT Scheduler {
|
| Scheduler(SchedulerClient* client,
|
| const SchedulerSettings& scheduler_settings);
|
|
|
| + void PostBeginFrameDeadline(base::TimeTicks deadline);
|
| void SetupNextBeginFrameIfNeeded();
|
| void DrawAndSwapIfPossible();
|
| void DrawAndSwapForced();
|
| @@ -126,6 +128,7 @@ class CC_EXPORT Scheduler {
|
| // workaround.
|
| bool safe_to_expect_begin_frame_;
|
| BeginFrameArgs last_begin_frame_args_;
|
| + base::CancelableClosure begin_frame_deadline_closure_;
|
|
|
| SchedulerStateMachine state_machine_;
|
| bool inside_process_scheduled_actions_;
|
|
|