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 "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/memory/weak_ptr.h" | 9 #include "base/memory/weak_ptr.h" |
10 #include "base/time.h" | 10 #include "base/time.h" |
11 #include "cc/animation/animation_events.h" | 11 #include "cc/animation/animation_events.h" |
12 #include "cc/base/completion_event.h" | 12 #include "cc/base/completion_event.h" |
13 #include "cc/resources/resource_update_controller.h" | 13 #include "cc/resources/resource_update_controller.h" |
14 #include "cc/scheduler/scheduler.h" | 14 #include "cc/scheduler/scheduler.h" |
| 15 #include "cc/scheduler/vsync_time_source.h" |
15 #include "cc/trees/layer_tree_host_impl.h" | 16 #include "cc/trees/layer_tree_host_impl.h" |
16 #include "cc/trees/proxy.h" | 17 #include "cc/trees/proxy.h" |
17 | 18 |
18 namespace cc { | 19 namespace cc { |
19 | 20 |
20 class ContextProvider; | 21 class ContextProvider; |
21 class InputHandler; | 22 class InputHandler; |
22 class LayerTreeHost; | 23 class LayerTreeHost; |
23 class ResourceUpdateQueue; | 24 class ResourceUpdateQueue; |
24 class Scheduler; | 25 class Scheduler; |
25 class ScopedThreadProxy; | 26 class ScopedThreadProxy; |
26 class Thread; | 27 class Thread; |
27 | 28 |
28 class ThreadProxy : public Proxy, | 29 class ThreadProxy : public Proxy, |
29 LayerTreeHostImplClient, | 30 LayerTreeHostImplClient, |
30 SchedulerClient, | 31 SchedulerClient, |
31 ResourceUpdateControllerClient { | 32 ResourceUpdateControllerClient, |
| 33 VSyncProvider { |
32 public: | 34 public: |
33 static scoped_ptr<Proxy> Create(LayerTreeHost* layer_tree_host, | 35 static scoped_ptr<Proxy> Create(LayerTreeHost* layer_tree_host, |
34 scoped_ptr<Thread> impl_thread); | 36 scoped_ptr<Thread> impl_thread); |
35 | 37 |
36 virtual ~ThreadProxy(); | 38 virtual ~ThreadProxy(); |
37 | 39 |
38 // Proxy implementation | 40 // Proxy implementation |
39 virtual bool CompositeAndReadback(void* pixels, gfx::Rect rect) OVERRIDE; | 41 virtual bool CompositeAndReadback(void* pixels, gfx::Rect rect) OVERRIDE; |
40 virtual void StartPageScaleAnimation(gfx::Vector2d target_offset, | 42 virtual void StartPageScaleAnimation(gfx::Vector2d target_offset, |
41 bool use_anchor, | 43 bool use_anchor, |
(...skipping 20 matching lines...) Expand all Loading... |
62 virtual void ForceSerializeOnSwapBuffers() OVERRIDE; | 64 virtual void ForceSerializeOnSwapBuffers() OVERRIDE; |
63 virtual skia::RefPtr<SkPicture> CapturePicture() OVERRIDE; | 65 virtual skia::RefPtr<SkPicture> CapturePicture() OVERRIDE; |
64 virtual scoped_ptr<base::Value> AsValue() const OVERRIDE; | 66 virtual scoped_ptr<base::Value> AsValue() const OVERRIDE; |
65 virtual bool CommitPendingForTesting() OVERRIDE; | 67 virtual bool CommitPendingForTesting() OVERRIDE; |
66 | 68 |
67 // LayerTreeHostImplClient implementation | 69 // LayerTreeHostImplClient implementation |
68 virtual void DidLoseOutputSurfaceOnImplThread() OVERRIDE; | 70 virtual void DidLoseOutputSurfaceOnImplThread() OVERRIDE; |
69 virtual void OnSwapBuffersCompleteOnImplThread() OVERRIDE; | 71 virtual void OnSwapBuffersCompleteOnImplThread() OVERRIDE; |
70 virtual void OnVSyncParametersChanged(base::TimeTicks timebase, | 72 virtual void OnVSyncParametersChanged(base::TimeTicks timebase, |
71 base::TimeDelta interval) OVERRIDE; | 73 base::TimeDelta interval) OVERRIDE; |
| 74 virtual void DidVSync(base::TimeTicks frame_time) OVERRIDE; |
72 virtual void OnCanDrawStateChanged(bool can_draw) OVERRIDE; | 75 virtual void OnCanDrawStateChanged(bool can_draw) OVERRIDE; |
73 virtual void OnHasPendingTreeStateChanged(bool has_pending_tree) OVERRIDE; | 76 virtual void OnHasPendingTreeStateChanged(bool has_pending_tree) OVERRIDE; |
74 virtual void SetNeedsRedrawOnImplThread() OVERRIDE; | 77 virtual void SetNeedsRedrawOnImplThread() OVERRIDE; |
75 virtual void DidInitializeVisibleTileOnImplThread() OVERRIDE; | 78 virtual void DidInitializeVisibleTileOnImplThread() OVERRIDE; |
76 virtual void SetNeedsCommitOnImplThread() OVERRIDE; | 79 virtual void SetNeedsCommitOnImplThread() OVERRIDE; |
77 virtual void SetNeedsManageTilesOnImplThread() OVERRIDE; | 80 virtual void SetNeedsManageTilesOnImplThread() OVERRIDE; |
78 virtual void PostAnimationEventsToMainThreadOnImplThread( | 81 virtual void PostAnimationEventsToMainThreadOnImplThread( |
79 scoped_ptr<AnimationEventsVector> queue, | 82 scoped_ptr<AnimationEventsVector> queue, |
80 base::Time wall_clock_time) OVERRIDE; | 83 base::Time wall_clock_time) OVERRIDE; |
81 virtual bool ReduceContentsTextureMemoryOnImplThread(size_t limit_bytes, | 84 virtual bool ReduceContentsTextureMemoryOnImplThread(size_t limit_bytes, |
(...skipping 15 matching lines...) Expand all Loading... |
97 virtual void ScheduledActionCommit() OVERRIDE; | 100 virtual void ScheduledActionCommit() OVERRIDE; |
98 virtual void ScheduledActionCheckForCompletedTileUploads() OVERRIDE; | 101 virtual void ScheduledActionCheckForCompletedTileUploads() OVERRIDE; |
99 virtual void ScheduledActionActivatePendingTreeIfNeeded() OVERRIDE; | 102 virtual void ScheduledActionActivatePendingTreeIfNeeded() OVERRIDE; |
100 virtual void ScheduledActionBeginContextRecreation() OVERRIDE; | 103 virtual void ScheduledActionBeginContextRecreation() OVERRIDE; |
101 virtual void ScheduledActionAcquireLayerTexturesForMainThread() OVERRIDE; | 104 virtual void ScheduledActionAcquireLayerTexturesForMainThread() OVERRIDE; |
102 virtual void DidAnticipatedDrawTimeChange(base::TimeTicks time) OVERRIDE; | 105 virtual void DidAnticipatedDrawTimeChange(base::TimeTicks time) OVERRIDE; |
103 | 106 |
104 // ResourceUpdateControllerClient implementation | 107 // ResourceUpdateControllerClient implementation |
105 virtual void ReadyToFinalizeTextureUpdates() OVERRIDE; | 108 virtual void ReadyToFinalizeTextureUpdates() OVERRIDE; |
106 | 109 |
| 110 // VSyncProvider implementation |
| 111 virtual void RequestVSyncNotification(VSyncClient* client) OVERRIDE; |
| 112 |
107 int MaxFramesPendingForTesting() const { | 113 int MaxFramesPendingForTesting() const { |
108 return scheduler_on_impl_thread_->MaxFramesPending(); | 114 return scheduler_on_impl_thread_->MaxFramesPending(); |
109 } | 115 } |
110 | 116 |
111 private: | 117 private: |
112 ThreadProxy(LayerTreeHost* layer_tree_host, scoped_ptr<Thread> impl_thread); | 118 ThreadProxy(LayerTreeHost* layer_tree_host, scoped_ptr<Thread> impl_thread); |
113 | 119 |
114 struct BeginFrameAndCommitState { | 120 struct BeginFrameAndCommitState { |
115 BeginFrameAndCommitState(); | 121 BeginFrameAndCommitState(); |
116 ~BeginFrameAndCommitState(); | 122 ~BeginFrameAndCommitState(); |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
241 CompletionEvent* texture_acquisition_completion_event_on_impl_thread_; | 247 CompletionEvent* texture_acquisition_completion_event_on_impl_thread_; |
242 | 248 |
243 scoped_ptr<ResourceUpdateController> | 249 scoped_ptr<ResourceUpdateController> |
244 current_resource_update_controller_on_impl_thread_; | 250 current_resource_update_controller_on_impl_thread_; |
245 | 251 |
246 // Set when the next draw should post DidCommitAndDrawFrame to the main | 252 // Set when the next draw should post DidCommitAndDrawFrame to the main |
247 // thread. | 253 // thread. |
248 bool next_frame_is_newly_committed_frame_on_impl_thread_; | 254 bool next_frame_is_newly_committed_frame_on_impl_thread_; |
249 | 255 |
250 bool render_vsync_enabled_; | 256 bool render_vsync_enabled_; |
| 257 bool render_vsync_notification_enabled_; |
| 258 VSyncClient* vsync_client_; |
251 | 259 |
252 bool inside_draw_; | 260 bool inside_draw_; |
253 | 261 |
254 bool defer_commits_; | 262 bool defer_commits_; |
255 scoped_ptr<BeginFrameAndCommitState> pending_deferred_commit_; | 263 scoped_ptr<BeginFrameAndCommitState> pending_deferred_commit_; |
256 | 264 |
257 base::TimeTicks smoothness_takes_priority_expiration_time_; | 265 base::TimeTicks smoothness_takes_priority_expiration_time_; |
258 bool renew_tree_priority_on_impl_thread_pending_; | 266 bool renew_tree_priority_on_impl_thread_pending_; |
259 }; | 267 }; |
260 | 268 |
261 } // namespace cc | 269 } // namespace cc |
262 | 270 |
263 #endif // CC_TREES_THREAD_PROXY_H_ | 271 #endif // CC_TREES_THREAD_PROXY_H_ |
OLD | NEW |