Index: cc/trees/thread_proxy.h |
diff --git a/cc/trees/thread_proxy.h b/cc/trees/thread_proxy.h |
index d67044499c0b4d790a6dbabfacf6eeee51ef7f07..9d94ced856a78393a86444828ac55776c85a77ec 100644 |
--- a/cc/trees/thread_proxy.h |
+++ b/cc/trees/thread_proxy.h |
@@ -31,7 +31,7 @@ class ResourceUpdateQueue; |
class Scheduler; |
class ScopedThreadProxy; |
-class ThreadProxy : public Proxy, |
+class CC_EXPORT ThreadProxy : public Proxy, |
LayerTreeHostImplClient, |
SchedulerClient, |
ResourceUpdateControllerClient { |
@@ -42,6 +42,97 @@ class ThreadProxy : public Proxy, |
virtual ~ThreadProxy(); |
+ struct BeginMainFrameAndCommitState { |
+ BeginMainFrameAndCommitState(); |
+ ~BeginMainFrameAndCommitState(); |
+ |
+ base::TimeTicks monotonic_frame_begin_time; |
+ scoped_ptr<ScrollAndScaleSet> scroll_info; |
+ size_t memory_allocation_limit_bytes; |
+ int memory_allocation_priority_cutoff; |
+ bool evicted_ui_resources; |
+ }; |
+ |
+ struct MainThreadOnly { |
+ MainThreadOnly(ThreadProxy* proxy, int layer_tree_host_id); |
+ ~MainThreadOnly(); |
+ |
+ const int layer_tree_host_id; |
+ |
+ // Set only when SetNeedsAnimate is called. |
+ bool animate_requested; |
+ // Set only when SetNeedsCommit is called. |
+ bool commit_requested; |
+ // Set by SetNeedsAnimate, SetNeedsUpdateLayers, and SetNeedsCommit. |
+ bool commit_request_sent_to_impl_thread; |
+ |
+ bool started; |
+ bool in_composite_and_readback; |
+ bool manage_tiles_pending; |
+ bool can_cancel_commit; |
+ bool defer_commits; |
+ |
+ base::CancelableClosure output_surface_creation_callback; |
+ RendererCapabilities renderer_capabilities_main_thread_copy; |
+ |
+ scoped_ptr<BeginMainFrameAndCommitState> pending_deferred_commit; |
+ base::WeakPtrFactory<ThreadProxy> weak_factory; |
+ }; |
+ |
+ struct ReadbackRequest; |
+ |
+ struct CompositorThreadOnly { |
+ CompositorThreadOnly(ThreadProxy* proxy, int layer_tree_host_id); |
+ ~CompositorThreadOnly(); |
+ |
+ const int layer_tree_host_id; |
+ |
+ // Copy of the main thread side contents texture manager for work |
+ // that needs to be done on the compositor thread. |
+ PrioritizedResourceManager* contents_texture_manager; |
+ |
+ scoped_ptr<Scheduler> scheduler; |
+ |
+ // Set when the main thread is waiting on a |
+ // ScheduledActionSendBeginMainFrame to be issued. |
+ CompletionEvent* begin_main_frame_sent_completion_event; |
+ |
+ // Set when the main thread is waiting on a readback. |
+ ReadbackRequest* readback_request; |
+ |
+ // Set when the main thread is waiting on a commit to complete. |
+ CompletionEvent* commit_completion_event; |
+ |
+ // Set when the main thread is waiting on a pending tree activation. |
+ CompletionEvent* completion_event_for_commit_held_on_tree_activation; |
+ |
+ scoped_ptr<ResourceUpdateController> current_resource_update_controller; |
+ |
+ // Set when the next draw should post DidCommitAndDrawFrame to the main |
+ // thread. |
+ bool next_frame_is_newly_committed_frame; |
+ |
+ bool inside_draw; |
+ |
+ bool input_throttled_until_commit; |
+ |
+ // Set when we freeze animations to avoid checkerboarding. |
+ bool animations_frozen_until_next_draw; |
+ base::TimeTicks animation_time; |
+ |
+ // Whether a commit has been completed since the last time animations were |
+ // ticked. If this happens, we need to animate again. |
+ bool did_commit_after_animating; |
+ |
+ base::TimeTicks smoothness_takes_priority_expiration_time; |
+ bool renew_tree_priority_pending; |
+ |
+ ProxyTimingHistory timing_history; |
+ |
+ scoped_ptr<LayerTreeHostImpl> layer_tree_host_impl; |
+ base::WeakPtrFactory<ThreadProxy> weak_factory; |
+ }; |
+ |
// Proxy implementation |
virtual bool CompositeAndReadback(void* pixels, |
const gfx::Rect& rect) OVERRIDE; |
@@ -128,21 +219,17 @@ class ThreadProxy : public Proxy, |
// ResourceUpdateControllerClient implementation |
virtual void ReadyToFinalizeTextureUpdates() OVERRIDE; |
- private: |
+ protected: |
ThreadProxy(LayerTreeHost* layer_tree_host, |
scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner); |
- struct BeginMainFrameAndCommitState { |
- BeginMainFrameAndCommitState(); |
- ~BeginMainFrameAndCommitState(); |
+ MainThreadOnly& main(); |
brianderson
2014/05/14 21:12:07
Does this need to be protected too? It looks like
simonhong
2014/05/15 01:32:07
Done.
|
+ const MainThreadOnly& main() const; |
- base::TimeTicks monotonic_frame_begin_time; |
- scoped_ptr<ScrollAndScaleSet> scroll_info; |
- size_t memory_allocation_limit_bytes; |
- int memory_allocation_priority_cutoff; |
- bool evicted_ui_resources; |
- }; |
+ CompositorThreadOnly& impl(); |
+ const CompositorThreadOnly& impl() const; |
+ private: |
// Called on main thread. |
void SetRendererCapabilitiesMainThreadCopy( |
const RendererCapabilities& capabilities); |
@@ -155,7 +242,6 @@ class ThreadProxy : public Proxy, |
void SendCommitRequestToImplThreadIfNeeded(); |
// Called on impl thread. |
- struct ReadbackRequest; |
struct CommitPendingRequest; |
struct SchedulerStateRequest; |
@@ -199,35 +285,8 @@ class ThreadProxy : public Proxy, |
LayerTreeHost* layer_tree_host(); |
const LayerTreeHost* layer_tree_host() const; |
- struct MainThreadOnly { |
- MainThreadOnly(ThreadProxy* proxy, int layer_tree_host_id); |
- ~MainThreadOnly(); |
- |
- const int layer_tree_host_id; |
- |
- // Set only when SetNeedsAnimate is called. |
- bool animate_requested; |
- // Set only when SetNeedsCommit is called. |
- bool commit_requested; |
- // Set by SetNeedsAnimate, SetNeedsUpdateLayers, and SetNeedsCommit. |
- bool commit_request_sent_to_impl_thread; |
- |
- bool started; |
- bool in_composite_and_readback; |
- bool manage_tiles_pending; |
- bool can_cancel_commit; |
- bool defer_commits; |
- |
- base::CancelableClosure output_surface_creation_callback; |
- RendererCapabilities renderer_capabilities_main_thread_copy; |
- |
- scoped_ptr<BeginMainFrameAndCommitState> pending_deferred_commit; |
- base::WeakPtrFactory<ThreadProxy> weak_factory; |
- }; |
// Use accessors instead of this variable directly. |
MainThreadOnly main_thread_only_vars_unsafe_; |
- MainThreadOnly& main(); |
- const MainThreadOnly& main() const; |
// Accessed on the main thread, or when main thread is blocked. |
struct MainThreadOrBlockedMainThread { |
@@ -247,61 +306,8 @@ class ThreadProxy : public Proxy, |
MainThreadOrBlockedMainThread& blocked_main(); |
const MainThreadOrBlockedMainThread& blocked_main() const; |
brianderson
2014/05/14 21:12:07
Please expose MainThreadOrBlockedMainThread as the
simonhong
2014/05/15 01:32:07
Done.
|
- struct CompositorThreadOnly { |
- CompositorThreadOnly(ThreadProxy* proxy, int layer_tree_host_id); |
- ~CompositorThreadOnly(); |
- |
- const int layer_tree_host_id; |
- |
- // Copy of the main thread side contents texture manager for work |
- // that needs to be done on the compositor thread. |
- PrioritizedResourceManager* contents_texture_manager; |
- |
- scoped_ptr<Scheduler> scheduler; |
- |
- // Set when the main thread is waiting on a |
- // ScheduledActionSendBeginMainFrame to be issued. |
- CompletionEvent* begin_main_frame_sent_completion_event; |
- |
- // Set when the main thread is waiting on a readback. |
- ReadbackRequest* readback_request; |
- |
- // Set when the main thread is waiting on a commit to complete. |
- CompletionEvent* commit_completion_event; |
- |
- // Set when the main thread is waiting on a pending tree activation. |
- CompletionEvent* completion_event_for_commit_held_on_tree_activation; |
- |
- scoped_ptr<ResourceUpdateController> current_resource_update_controller; |
- |
- // Set when the next draw should post DidCommitAndDrawFrame to the main |
- // thread. |
- bool next_frame_is_newly_committed_frame; |
- |
- bool inside_draw; |
- |
- bool input_throttled_until_commit; |
- |
- // Set when we freeze animations to avoid checkerboarding. |
- bool animations_frozen_until_next_draw; |
- base::TimeTicks animation_time; |
- |
- // Whether a commit has been completed since the last time animations were |
- // ticked. If this happens, we need to animate again. |
- bool did_commit_after_animating; |
- |
- base::TimeTicks smoothness_takes_priority_expiration_time; |
- bool renew_tree_priority_pending; |
- |
- ProxyTimingHistory timing_history; |
- |
- scoped_ptr<LayerTreeHostImpl> layer_tree_host_impl; |
- base::WeakPtrFactory<ThreadProxy> weak_factory; |
- }; |
// Use accessors instead of this variable directly. |
CompositorThreadOnly compositor_thread_vars_unsafe_; |
- CompositorThreadOnly& impl(); |
- const CompositorThreadOnly& impl() const; |
base::WeakPtr<ThreadProxy> main_thread_weak_ptr_; |
base::WeakPtr<ThreadProxy> impl_thread_weak_ptr_; |