Index: cc/frame_rate_controller.h |
diff --git a/cc/frame_rate_controller.h b/cc/frame_rate_controller.h |
index 638cbb270ce9b24689d5095baf174ade4f4d1a13..2aeeae156d658073507eb9d9af03f72585949a40 100644 |
--- a/cc/frame_rate_controller.h |
+++ b/cc/frame_rate_controller.h |
@@ -1,3 +1,82 @@ |
-// 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 CCFrameRateController_h |
+#define CCFrameRateController_h |
+ |
+#include "base/memory/scoped_ptr.h" |
+#include "base/time.h" |
+#include "CCTimer.h" |
+#include <wtf/PassRefPtr.h> |
+#include <wtf/RefPtr.h> |
+ |
+namespace cc { |
+ |
+class CCThread; |
+class CCTimeSource; |
+ |
+class CCFrameRateControllerClient { |
+public: |
+ // Throttled is true when we have a maximum number of frames pending. |
+ virtual void vsyncTick(bool throttled) = 0; |
+ |
+protected: |
+ virtual ~CCFrameRateControllerClient() {} |
+}; |
+ |
+class CCFrameRateControllerTimeSourceAdapter; |
+ |
+class CCFrameRateController : public CCTimerClient { |
+public: |
+ explicit CCFrameRateController(PassRefPtr<CCTimeSource>); |
+ // Alternate form of CCFrameRateController with unthrottled frame-rate. |
+ explicit CCFrameRateController(CCThread*); |
+ virtual ~CCFrameRateController(); |
+ |
+ void setClient(CCFrameRateControllerClient* client) { m_client = client; } |
+ |
+ void setActive(bool); |
+ |
+ // Use the following methods to adjust target frame rate. |
+ // |
+ // Multiple frames can be in-progress, but for every didBeginFrame, a |
+ // didFinishFrame should be posted. |
+ // |
+ // If the rendering pipeline crashes, call didAbortAllPendingFrames. |
+ void didBeginFrame(); |
+ void didFinishFrame(); |
+ void didAbortAllPendingFrames(); |
+ void setMaxFramesPending(int); // 0 for unlimited. |
+ |
+ // This returns null for unthrottled frame-rate. |
+ base::TimeTicks nextTickTime(); |
+ |
+ void setTimebaseAndInterval(base::TimeTicks timebase, base::TimeDelta interval); |
+ void setSwapBuffersCompleteSupported(bool); |
+ |
+protected: |
+ friend class CCFrameRateControllerTimeSourceAdapter; |
+ void onTimerTick(); |
+ |
+ void postManualTick(); |
+ |
+ // CCTimerClient implementation (used for unthrottled frame-rate). |
+ virtual void onTimerFired() OVERRIDE; |
+ |
+ CCFrameRateControllerClient* m_client; |
+ int m_numFramesPending; |
+ int m_maxFramesPending; |
+ RefPtr<CCTimeSource> m_timeSource; |
+ scoped_ptr<CCFrameRateControllerTimeSourceAdapter> m_timeSourceClientAdapter; |
+ bool m_active; |
+ bool m_swapBuffersCompleteSupported; |
+ |
+ // Members for unthrottled frame-rate. |
+ bool m_isTimeSourceThrottling; |
+ scoped_ptr<CCTimer> m_manualTicker; |
+}; |
+ |
+} // namespace cc |
+ |
+#endif // CCFrameRateController_h |