OLD | NEW |
---|---|
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CC_TREES_THREAD_PROXY_H_ | 5 #ifndef CC_TREES_THREAD_PROXY_H_ |
6 #define CC_TREES_THREAD_PROXY_H_ | 6 #define CC_TREES_THREAD_PROXY_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
11 #include "base/memory/weak_ptr.h" | 11 #include "base/memory/weak_ptr.h" |
12 #include "base/time/time.h" | 12 #include "base/time/time.h" |
13 #include "cc/animation/animation_events.h" | 13 #include "cc/animation/animation_events.h" |
14 #include "cc/base/completion_event.h" | 14 #include "cc/base/completion_event.h" |
15 #include "cc/base/delayed_unique_notifier.h" | 15 #include "cc/base/delayed_unique_notifier.h" |
16 #include "cc/resources/resource_update_controller.h" | 16 #include "cc/resources/resource_update_controller.h" |
17 #include "cc/scheduler/scheduler.h" | 17 #include "cc/scheduler/scheduler.h" |
18 #include "cc/trees/layer_tree_host_impl.h" | 18 #include "cc/trees/layer_tree_host_impl.h" |
19 #include "cc/trees/proxy.h" | 19 #include "cc/trees/proxy.h" |
20 #include "cc/trees/proxy_timing_history.h" | 20 #include "cc/trees/proxy_timing_history.h" |
21 | 21 |
22 namespace base { | 22 namespace base { |
23 class SingleThreadTaskRunner; | 23 class SingleThreadTaskRunner; |
24 } | 24 } |
25 | 25 |
26 namespace cc { | 26 namespace cc { |
27 | 27 |
28 class BeginFrameSource; | |
28 class ContextProvider; | 29 class ContextProvider; |
29 class InputHandlerClient; | 30 class InputHandlerClient; |
30 class LayerTreeHost; | 31 class LayerTreeHost; |
31 class ResourceUpdateQueue; | 32 class ResourceUpdateQueue; |
32 class Scheduler; | 33 class Scheduler; |
33 class ScopedThreadProxy; | 34 class ScopedThreadProxy; |
34 | 35 |
35 class CC_EXPORT ThreadProxy : public Proxy, | 36 class CC_EXPORT ThreadProxy : public Proxy, |
36 NON_EXPORTED_BASE(LayerTreeHostImplClient), | 37 NON_EXPORTED_BASE(LayerTreeHostImplClient), |
37 NON_EXPORTED_BASE(SchedulerClient), | 38 NON_EXPORTED_BASE(SchedulerClient), |
38 NON_EXPORTED_BASE(ResourceUpdateControllerClient) { | 39 NON_EXPORTED_BASE(ResourceUpdateControllerClient) { |
39 public: | 40 public: |
40 static scoped_ptr<Proxy> Create( | 41 static scoped_ptr<Proxy> Create( |
41 LayerTreeHost* layer_tree_host, | 42 LayerTreeHost* layer_tree_host, |
42 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, | 43 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, |
43 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner); | 44 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner, |
45 scoped_ptr<BeginFrameSource> external_begin_frame_source); | |
44 | 46 |
45 virtual ~ThreadProxy(); | 47 virtual ~ThreadProxy(); |
46 | 48 |
47 struct BeginMainFrameAndCommitState { | 49 struct BeginMainFrameAndCommitState { |
48 BeginMainFrameAndCommitState(); | 50 BeginMainFrameAndCommitState(); |
49 ~BeginMainFrameAndCommitState(); | 51 ~BeginMainFrameAndCommitState(); |
50 | 52 |
51 unsigned int begin_frame_id; | 53 unsigned int begin_frame_id; |
52 BeginFrameArgs begin_frame_args; | 54 BeginFrameArgs begin_frame_args; |
53 scoped_ptr<ScrollAndScaleSet> scroll_info; | 55 scoped_ptr<ScrollAndScaleSet> scroll_info; |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
203 override; | 205 override; |
204 virtual bool IsInsideDraw() override; | 206 virtual bool IsInsideDraw() override; |
205 virtual void RenewTreePriority() override; | 207 virtual void RenewTreePriority() override; |
206 virtual void PostDelayedScrollbarFadeOnImplThread( | 208 virtual void PostDelayedScrollbarFadeOnImplThread( |
207 const base::Closure& start_fade, | 209 const base::Closure& start_fade, |
208 base::TimeDelta delay) override; | 210 base::TimeDelta delay) override; |
209 virtual void DidActivateSyncTree() override; | 211 virtual void DidActivateSyncTree() override; |
210 virtual void DidManageTiles() override; | 212 virtual void DidManageTiles() override; |
211 | 213 |
212 // SchedulerClient implementation | 214 // SchedulerClient implementation |
213 virtual BeginFrameSource* ExternalBeginFrameSource() override; | |
214 virtual void WillBeginImplFrame(const BeginFrameArgs& args) override; | 215 virtual void WillBeginImplFrame(const BeginFrameArgs& args) override; |
215 virtual void ScheduledActionSendBeginMainFrame() override; | 216 virtual void ScheduledActionSendBeginMainFrame() override; |
216 virtual DrawResult ScheduledActionDrawAndSwapIfPossible() override; | 217 virtual DrawResult ScheduledActionDrawAndSwapIfPossible() override; |
217 virtual DrawResult ScheduledActionDrawAndSwapForced() override; | 218 virtual DrawResult ScheduledActionDrawAndSwapForced() override; |
218 virtual void ScheduledActionAnimate() override; | 219 virtual void ScheduledActionAnimate() override; |
219 virtual void ScheduledActionCommit() override; | 220 virtual void ScheduledActionCommit() override; |
220 virtual void ScheduledActionUpdateVisibleTiles() override; | 221 virtual void ScheduledActionUpdateVisibleTiles() override; |
221 virtual void ScheduledActionActivateSyncTree() override; | 222 virtual void ScheduledActionActivateSyncTree() override; |
222 virtual void ScheduledActionBeginOutputSurfaceCreation() override; | 223 virtual void ScheduledActionBeginOutputSurfaceCreation() override; |
223 virtual void ScheduledActionManageTiles() override; | 224 virtual void ScheduledActionManageTiles() override; |
224 virtual void DidAnticipatedDrawTimeChange(base::TimeTicks time) override; | 225 virtual void DidAnticipatedDrawTimeChange(base::TimeTicks time) override; |
225 virtual base::TimeDelta DrawDurationEstimate() override; | 226 virtual base::TimeDelta DrawDurationEstimate() override; |
226 virtual base::TimeDelta BeginMainFrameToCommitDurationEstimate() override; | 227 virtual base::TimeDelta BeginMainFrameToCommitDurationEstimate() override; |
227 virtual base::TimeDelta CommitToActivateDurationEstimate() override; | 228 virtual base::TimeDelta CommitToActivateDurationEstimate() override; |
228 virtual void DidBeginImplFrameDeadline() override; | 229 virtual void DidBeginImplFrameDeadline() override; |
229 | 230 |
230 // ResourceUpdateControllerClient implementation | 231 // ResourceUpdateControllerClient implementation |
231 virtual void ReadyToFinalizeTextureUpdates() override; | 232 virtual void ReadyToFinalizeTextureUpdates() override; |
232 | 233 |
233 protected: | 234 protected: |
234 ThreadProxy(LayerTreeHost* layer_tree_host, | 235 ThreadProxy( |
235 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, | 236 LayerTreeHost* layer_tree_host, |
236 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner); | 237 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, |
238 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner, | |
239 scoped_ptr<BeginFrameSource> external_begin_frame_source); | |
237 | 240 |
238 private: | 241 private: |
239 // Called on main thread. | 242 // Called on main thread. |
240 void SetRendererCapabilitiesMainThreadCopy( | 243 void SetRendererCapabilitiesMainThreadCopy( |
241 const RendererCapabilities& capabilities); | 244 const RendererCapabilities& capabilities); |
242 void BeginMainFrame( | 245 void BeginMainFrame( |
243 scoped_ptr<BeginMainFrameAndCommitState> begin_main_frame_state); | 246 scoped_ptr<BeginMainFrameAndCommitState> begin_main_frame_state); |
244 void DidCommitAndDrawFrame(); | 247 void DidCommitAndDrawFrame(); |
245 void DidCompleteSwapBuffers(); | 248 void DidCompleteSwapBuffers(); |
246 void SetAnimationEvents(scoped_ptr<AnimationEventsVector> queue); | 249 void SetAnimationEvents(scoped_ptr<AnimationEventsVector> queue); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
291 MainThreadOrBlockedMainThread main_thread_or_blocked_vars_unsafe_; | 294 MainThreadOrBlockedMainThread main_thread_or_blocked_vars_unsafe_; |
292 MainThreadOrBlockedMainThread& blocked_main(); | 295 MainThreadOrBlockedMainThread& blocked_main(); |
293 | 296 |
294 // Use accessors instead of this variable directly. | 297 // Use accessors instead of this variable directly. |
295 CompositorThreadOnly compositor_thread_vars_unsafe_; | 298 CompositorThreadOnly compositor_thread_vars_unsafe_; |
296 CompositorThreadOnly& impl(); | 299 CompositorThreadOnly& impl(); |
297 | 300 |
298 base::WeakPtr<ThreadProxy> main_thread_weak_ptr_; | 301 base::WeakPtr<ThreadProxy> main_thread_weak_ptr_; |
299 base::WeakPtr<ThreadProxy> impl_thread_weak_ptr_; | 302 base::WeakPtr<ThreadProxy> impl_thread_weak_ptr_; |
300 | 303 |
304 scoped_ptr<BeginFrameSource> external_begin_frame_source_; | |
brianderson
2014/10/18 00:08:45
Should this go into the CompositorThreadOnly group
simonhong
2014/10/23 01:03:08
Done.
| |
305 | |
301 DISALLOW_COPY_AND_ASSIGN(ThreadProxy); | 306 DISALLOW_COPY_AND_ASSIGN(ThreadProxy); |
302 }; | 307 }; |
303 | 308 |
304 } // namespace cc | 309 } // namespace cc |
305 | 310 |
306 #endif // CC_TREES_THREAD_PROXY_H_ | 311 #endif // CC_TREES_THREAD_PROXY_H_ |
OLD | NEW |