Remove extra line from unit_tests.isolate
[chromium-blink-merge.git] / cc / CCSingleThreadProxy.h
blob979dbb3907f529f510878397c38a9725c2249d4b
1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CCSingleThreadProxy_h
6 #define CCSingleThreadProxy_h
8 #include "CCAnimationEvents.h"
9 #include "CCLayerTreeHostImpl.h"
10 #include "CCProxy.h"
11 #include <base/time.h>
12 #include <limits>
14 namespace cc {
16 class CCLayerTreeHost;
18 class CCSingleThreadProxy : public CCProxy, CCLayerTreeHostImplClient {
19 public:
20 static scoped_ptr<CCProxy> create(CCLayerTreeHost*);
21 virtual ~CCSingleThreadProxy();
23 // CCProxy implementation
24 virtual bool compositeAndReadback(void *pixels, const IntRect&) OVERRIDE;
25 virtual void startPageScaleAnimation(const IntSize& targetPosition, bool useAnchor, float scale, double duration) OVERRIDE;
26 virtual void finishAllRendering() OVERRIDE;
27 virtual bool isStarted() const OVERRIDE;
28 virtual bool initializeContext() OVERRIDE;
29 virtual void setSurfaceReady() OVERRIDE;
30 virtual void setVisible(bool) OVERRIDE;
31 virtual bool initializeRenderer() OVERRIDE;
32 virtual bool recreateContext() OVERRIDE;
33 virtual void renderingStats(CCRenderingStats*) OVERRIDE;
34 virtual const RendererCapabilities& rendererCapabilities() const OVERRIDE;
35 virtual void loseContext() OVERRIDE;
36 virtual void setNeedsAnimate() OVERRIDE;
37 virtual void setNeedsCommit() OVERRIDE;
38 virtual void setNeedsRedraw() OVERRIDE;
39 virtual bool commitRequested() const OVERRIDE;
40 virtual void didAddAnimation() OVERRIDE;
41 virtual void start() OVERRIDE;
42 virtual void stop() OVERRIDE;
43 virtual size_t maxPartialTextureUpdates() const OVERRIDE;
44 virtual void acquireLayerTextures() OVERRIDE { }
45 virtual void forceSerializeOnSwapBuffers() OVERRIDE;
47 // CCLayerTreeHostImplClient implementation
48 virtual void didLoseContextOnImplThread() OVERRIDE { }
49 virtual void onSwapBuffersCompleteOnImplThread() OVERRIDE;
50 virtual void onVSyncParametersChanged(double monotonicTimebase, double intervalInSeconds) OVERRIDE { }
51 virtual void onCanDrawStateChanged(bool canDraw) OVERRIDE { }
52 virtual void setNeedsRedrawOnImplThread() OVERRIDE;
53 virtual void setNeedsCommitOnImplThread() OVERRIDE;
54 virtual void postAnimationEventsToMainThreadOnImplThread(scoped_ptr<CCAnimationEventsVector>, double wallClockTime) OVERRIDE;
55 virtual void releaseContentsTexturesOnImplThread() OVERRIDE;
57 // Called by the legacy path where RenderWidget does the scheduling.
58 void compositeImmediately();
60 private:
61 explicit CCSingleThreadProxy(CCLayerTreeHost*);
63 bool commitAndComposite();
64 void doCommit(PassOwnPtr<CCTextureUpdateQueue>);
65 bool doComposite();
66 void didSwapFrame();
68 // Accessed on main thread only.
69 CCLayerTreeHost* m_layerTreeHost;
70 bool m_contextLost;
72 // Holds on to the context between initializeContext() and initializeRenderer() calls. Shouldn't
73 // be used for anything else.
74 scoped_ptr<CCGraphicsContext> m_contextBeforeInitialization;
76 // Used on the CCThread, but checked on main thread during initialization/shutdown.
77 scoped_ptr<CCLayerTreeHostImpl> m_layerTreeHostImpl;
78 bool m_rendererInitialized;
79 RendererCapabilities m_RendererCapabilitiesForMainThread;
81 bool m_nextFrameIsNewlyCommittedFrame;
83 base::TimeDelta m_totalCommitTime;
84 size_t m_totalCommitCount;
87 // For use in the single-threaded case. In debug builds, it pretends that the
88 // code is running on the impl thread to satisfy assertion checks.
89 class DebugScopedSetImplThread {
90 public:
91 DebugScopedSetImplThread()
93 #if !ASSERT_DISABLED
94 CCProxy::setCurrentThreadIsImplThread(true);
95 #endif
97 ~DebugScopedSetImplThread()
99 #if !ASSERT_DISABLED
100 CCProxy::setCurrentThreadIsImplThread(false);
101 #endif
105 // For use in the single-threaded case. In debug builds, it pretends that the
106 // code is running on the main thread to satisfy assertion checks.
107 class DebugScopedSetMainThread {
108 public:
109 DebugScopedSetMainThread()
111 #if !ASSERT_DISABLED
112 CCProxy::setCurrentThreadIsImplThread(false);
113 #endif
115 ~DebugScopedSetMainThread()
117 #if !ASSERT_DISABLED
118 CCProxy::setCurrentThreadIsImplThread(true);
119 #endif
123 // For use in the single-threaded case. In debug builds, it pretends that the
124 // code is running on the impl thread and that the main thread is blocked to
125 // satisfy assertion checks
126 class DebugScopedSetImplThreadAndMainThreadBlocked {
127 private:
128 DebugScopedSetImplThread m_implThread;
129 DebugScopedSetMainThreadBlocked m_mainThreadBlocked;
132 } // namespace cc
134 #endif