Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(167)

Side by Side Diff: cc/trees/thread_proxy.h

Issue 619843002: cc: Make separate interface for BeginFrame ipc from OutputSurface (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/trees/single_thread_proxy.cc ('k') | cc/trees/thread_proxy.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 ~ThreadProxy() override; 47 ~ThreadProxy() override;
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 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 91
90 LayerTreeHost* layer_tree_host; 92 LayerTreeHost* layer_tree_host;
91 bool commit_waits_for_activation; 93 bool commit_waits_for_activation;
92 bool main_thread_inside_commit; 94 bool main_thread_inside_commit;
93 }; 95 };
94 96
95 struct CompositorThreadOnly { 97 struct CompositorThreadOnly {
96 CompositorThreadOnly( 98 CompositorThreadOnly(
97 ThreadProxy* proxy, 99 ThreadProxy* proxy,
98 int layer_tree_host_id, 100 int layer_tree_host_id,
99 RenderingStatsInstrumentation* rendering_stats_instrumentation); 101 RenderingStatsInstrumentation* rendering_stats_instrumentation,
102 scoped_ptr<BeginFrameSource> external_begin_frame_source);
100 ~CompositorThreadOnly(); 103 ~CompositorThreadOnly();
101 104
102 const int layer_tree_host_id; 105 const int layer_tree_host_id;
103 106
104 // Copy of the main thread side contents texture manager for work 107 // Copy of the main thread side contents texture manager for work
105 // that needs to be done on the compositor thread. 108 // that needs to be done on the compositor thread.
106 PrioritizedResourceManager* contents_texture_manager; 109 PrioritizedResourceManager* contents_texture_manager;
107 110
108 scoped_ptr<Scheduler> scheduler; 111 scoped_ptr<Scheduler> scheduler;
109 112
(...skipping 20 matching lines...) Expand all
130 base::TimeTicks animation_time; 133 base::TimeTicks animation_time;
131 134
132 // Whether a commit has been completed since the last time animations were 135 // Whether a commit has been completed since the last time animations were
133 // ticked. If this happens, we need to animate again. 136 // ticked. If this happens, we need to animate again.
134 bool did_commit_after_animating; 137 bool did_commit_after_animating;
135 138
136 DelayedUniqueNotifier smoothness_priority_expiration_notifier; 139 DelayedUniqueNotifier smoothness_priority_expiration_notifier;
137 140
138 ProxyTimingHistory timing_history; 141 ProxyTimingHistory timing_history;
139 142
143 scoped_ptr<BeginFrameSource> external_begin_frame_source;
144
140 scoped_ptr<LayerTreeHostImpl> layer_tree_host_impl; 145 scoped_ptr<LayerTreeHostImpl> layer_tree_host_impl;
141 base::WeakPtrFactory<ThreadProxy> weak_factory; 146 base::WeakPtrFactory<ThreadProxy> weak_factory;
142 }; 147 };
143 148
144 const MainThreadOnly& main() const; 149 const MainThreadOnly& main() const;
145 const MainThreadOrBlockedMainThread& blocked_main() const; 150 const MainThreadOrBlockedMainThread& blocked_main() const;
146 const CompositorThreadOnly& impl() const; 151 const CompositorThreadOnly& impl() const;
147 152
148 // Proxy implementation 153 // Proxy implementation
149 void FinishAllRendering() override; 154 void FinishAllRendering() override;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 bool ReduceContentsTextureMemoryOnImplThread(size_t limit_bytes, 201 bool ReduceContentsTextureMemoryOnImplThread(size_t limit_bytes,
197 int priority_cutoff) override; 202 int priority_cutoff) override;
198 bool IsInsideDraw() override; 203 bool IsInsideDraw() override;
199 void RenewTreePriority() override; 204 void RenewTreePriority() override;
200 void PostDelayedScrollbarFadeOnImplThread(const base::Closure& start_fade, 205 void PostDelayedScrollbarFadeOnImplThread(const base::Closure& start_fade,
201 base::TimeDelta delay) override; 206 base::TimeDelta delay) override;
202 void DidActivateSyncTree() override; 207 void DidActivateSyncTree() override;
203 void DidManageTiles() override; 208 void DidManageTiles() override;
204 209
205 // SchedulerClient implementation 210 // SchedulerClient implementation
206 BeginFrameSource* ExternalBeginFrameSource() override;
207 void WillBeginImplFrame(const BeginFrameArgs& args) override; 211 void WillBeginImplFrame(const BeginFrameArgs& args) override;
208 void ScheduledActionSendBeginMainFrame() override; 212 void ScheduledActionSendBeginMainFrame() override;
209 DrawResult ScheduledActionDrawAndSwapIfPossible() override; 213 DrawResult ScheduledActionDrawAndSwapIfPossible() override;
210 DrawResult ScheduledActionDrawAndSwapForced() override; 214 DrawResult ScheduledActionDrawAndSwapForced() override;
211 void ScheduledActionAnimate() override; 215 void ScheduledActionAnimate() override;
212 void ScheduledActionCommit() override; 216 void ScheduledActionCommit() override;
213 void ScheduledActionUpdateVisibleTiles() override; 217 void ScheduledActionUpdateVisibleTiles() override;
214 void ScheduledActionActivateSyncTree() override; 218 void ScheduledActionActivateSyncTree() override;
215 void ScheduledActionBeginOutputSurfaceCreation() override; 219 void ScheduledActionBeginOutputSurfaceCreation() override;
216 void ScheduledActionManageTiles() override; 220 void ScheduledActionManageTiles() override;
217 void DidAnticipatedDrawTimeChange(base::TimeTicks time) override; 221 void DidAnticipatedDrawTimeChange(base::TimeTicks time) override;
218 base::TimeDelta DrawDurationEstimate() override; 222 base::TimeDelta DrawDurationEstimate() override;
219 base::TimeDelta BeginMainFrameToCommitDurationEstimate() override; 223 base::TimeDelta BeginMainFrameToCommitDurationEstimate() override;
220 base::TimeDelta CommitToActivateDurationEstimate() override; 224 base::TimeDelta CommitToActivateDurationEstimate() override;
221 void DidBeginImplFrameDeadline() override; 225 void DidBeginImplFrameDeadline() override;
222 226
223 // ResourceUpdateControllerClient implementation 227 // ResourceUpdateControllerClient implementation
224 void ReadyToFinalizeTextureUpdates() override; 228 void ReadyToFinalizeTextureUpdates() override;
225 229
226 protected: 230 protected:
227 ThreadProxy(LayerTreeHost* layer_tree_host, 231 ThreadProxy(
228 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, 232 LayerTreeHost* layer_tree_host,
229 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner); 233 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
234 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner,
235 scoped_ptr<BeginFrameSource> external_begin_frame_source);
230 236
231 private: 237 private:
232 // Called on main thread. 238 // Called on main thread.
233 void SetRendererCapabilitiesMainThreadCopy( 239 void SetRendererCapabilitiesMainThreadCopy(
234 const RendererCapabilities& capabilities); 240 const RendererCapabilities& capabilities);
235 void BeginMainFrame( 241 void BeginMainFrame(
236 scoped_ptr<BeginMainFrameAndCommitState> begin_main_frame_state); 242 scoped_ptr<BeginMainFrameAndCommitState> begin_main_frame_state);
237 void DidCommitAndDrawFrame(); 243 void DidCommitAndDrawFrame();
238 void DidCompleteSwapBuffers(); 244 void DidCompleteSwapBuffers();
239 void SetAnimationEvents(scoped_ptr<AnimationEventsVector> queue); 245 void SetAnimationEvents(scoped_ptr<AnimationEventsVector> queue);
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 295
290 base::WeakPtr<ThreadProxy> main_thread_weak_ptr_; 296 base::WeakPtr<ThreadProxy> main_thread_weak_ptr_;
291 base::WeakPtr<ThreadProxy> impl_thread_weak_ptr_; 297 base::WeakPtr<ThreadProxy> impl_thread_weak_ptr_;
292 298
293 DISALLOW_COPY_AND_ASSIGN(ThreadProxy); 299 DISALLOW_COPY_AND_ASSIGN(ThreadProxy);
294 }; 300 };
295 301
296 } // namespace cc 302 } // namespace cc
297 303
298 #endif // CC_TREES_THREAD_PROXY_H_ 304 #endif // CC_TREES_THREAD_PROXY_H_
OLDNEW
« no previous file with comments | « cc/trees/single_thread_proxy.cc ('k') | cc/trees/thread_proxy.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698