summaryrefslogtreecommitdiffstats
path: root/cc/scheduler.h
diff options
context:
space:
mode:
authorenne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-12 22:43:41 +0000
committerenne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-12 22:43:41 +0000
commitcd57cc5a246367c2558fefa04ae9eca8f4d545d2 (patch)
treea2235045e9c5e4ff028d641b76f5d01aa5461b26 /cc/scheduler.h
parent3fe7ba055be580443445895c0ee01ada3b628487 (diff)
downloadchromium_src-cd57cc5a246367c2558fefa04ae9eca8f4d545d2.zip
chromium_src-cd57cc5a246367c2558fefa04ae9eca8f4d545d2.tar.gz
chromium_src-cd57cc5a246367c2558fefa04ae9eca8f4d545d2.tar.bz2
[cc] Rename all cc/ filenames to Chromium style
BUG=155413 Review URL: https://codereview.chromium.org/11122003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161671 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/scheduler.h')
-rw-r--r--cc/scheduler.h108
1 files changed, 107 insertions, 1 deletions
diff --git a/cc/scheduler.h b/cc/scheduler.h
index 638cbb2..1b48307 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