| Index: cc/scheduler.h
|
| diff --git a/cc/scheduler.h b/cc/scheduler.h
|
| index 638cbb270ce9b24689d5095baf174ade4f4d1a13..1b483074b7cbd27a4cd3494aa12f913fa640c604 100644
|
| --- a/cc/scheduler.h
|
| +++ b/cc/scheduler.h
|
| @@ -1,3 +1,109 @@
|
| -// Copyright 2012 The Chromium Authors. All rights reserved.
|
| +// Copyright 2011 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 CCScheduler_h
|
| +#define CCScheduler_h
|
| +
|
| +#include "base/basictypes.h"
|
| +#include "base/memory/scoped_ptr.h"
|
| +#include "base/time.h"
|
| +#include "CCFrameRateController.h"
|
| +#include "CCSchedulerStateMachine.h"
|
| +#include <wtf/PassOwnPtr.h>
|
| +
|
| +namespace cc {
|
| +
|
| +class CCThread;
|
| +
|
| +struct CCScheduledActionDrawAndSwapResult {
|
| + CCScheduledActionDrawAndSwapResult()
|
| + : didDraw(false)
|
| + , didSwap(false)
|
| + {
|
| + }
|
| + CCScheduledActionDrawAndSwapResult(bool didDraw, bool didSwap)
|
| + : didDraw(didDraw)
|
| + , didSwap(didSwap)
|
| + {
|
| + }
|
| + bool didDraw;
|
| + bool didSwap;
|
| +};
|
| +
|
| +class CCSchedulerClient {
|
| +public:
|
| + virtual void scheduledActionBeginFrame() = 0;
|
| + virtual CCScheduledActionDrawAndSwapResult scheduledActionDrawAndSwapIfPossible() = 0;
|
| + virtual CCScheduledActionDrawAndSwapResult scheduledActionDrawAndSwapForced() = 0;
|
| + virtual void scheduledActionCommit() = 0;
|
| + virtual void scheduledActionBeginContextRecreation() = 0;
|
| + virtual void scheduledActionAcquireLayerTexturesForMainThread() = 0;
|
| + virtual void didAnticipatedDrawTimeChange(base::TimeTicks) = 0;
|
| +
|
| +protected:
|
| + virtual ~CCSchedulerClient() { }
|
| +};
|
| +
|
| +class CCScheduler : CCFrameRateControllerClient {
|
| +public:
|
| + static PassOwnPtr<CCScheduler> create(CCSchedulerClient* client, scoped_ptr<CCFrameRateController> frameRateController)
|
| + {
|
| + return adoptPtr(new CCScheduler(client, frameRateController.Pass()));
|
| + }
|
| +
|
| + virtual ~CCScheduler();
|
| +
|
| + void setCanBeginFrame(bool);
|
| +
|
| + void setVisible(bool);
|
| + void setCanDraw(bool);
|
| +
|
| + void setNeedsCommit();
|
| +
|
| + // Like setNeedsCommit(), but ensures a commit will definitely happen even if we are not visible.
|
| + void setNeedsForcedCommit();
|
| +
|
| + void setNeedsRedraw();
|
| +
|
| + void setMainThreadNeedsLayerTextures();
|
| +
|
| + // Like setNeedsRedraw(), but ensures the draw will definitely happen even if we are not visible.
|
| + void setNeedsForcedRedraw();
|
| +
|
| + void beginFrameComplete();
|
| + void beginFrameAborted();
|
| +
|
| + void setMaxFramesPending(int);
|
| + void setSwapBuffersCompleteSupported(bool);
|
| + void didSwapBuffersComplete();
|
| +
|
| + void didLoseContext();
|
| + void didRecreateContext();
|
| +
|
| + bool commitPending() const { return m_stateMachine.commitPending(); }
|
| + bool redrawPending() const { return m_stateMachine.redrawPending(); }
|
| +
|
| + void setTimebaseAndInterval(base::TimeTicks timebase, base::TimeDelta interval);
|
| +
|
| + base::TimeTicks anticipatedDrawTime();
|
| +
|
| + // CCFrameRateControllerClient implementation
|
| + virtual void vsyncTick(bool throttled) OVERRIDE;
|
| +
|
| +private:
|
| + CCScheduler(CCSchedulerClient*, scoped_ptr<CCFrameRateController>);
|
| +
|
| + void processScheduledActions();
|
| +
|
| + CCSchedulerClient* m_client;
|
| + scoped_ptr<CCFrameRateController> m_frameRateController;
|
| + CCSchedulerStateMachine m_stateMachine;
|
| + bool m_insideProcessScheduledActions;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(CCScheduler);
|
| +};
|
| +
|
| +} // namespace cc
|
| +
|
| +#endif // CCScheduler_h
|
|
|