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

Unified Diff: cc/trees/thread_proxy.h

Issue 1357373002: Add basic framework for splitting thread proxy. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Minor clean-up. Created 5 years, 3 months 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 side-by-side diff with in-line comments
Download patch
Index: cc/trees/thread_proxy.h
diff --git a/cc/trees/thread_proxy.h b/cc/trees/thread_proxy.h
index 1a1406394772aac03d24c4b43d07d403801da1bd..ea0cb99dfcdd20f25b7410be4e9ee43ab12f284d 100644
--- a/cc/trees/thread_proxy.h
+++ b/cc/trees/thread_proxy.h
@@ -17,6 +17,7 @@
#include "cc/scheduler/scheduler.h"
#include "cc/trees/layer_tree_host_impl.h"
#include "cc/trees/proxy.h"
+#include "threaded_channel.h"
namespace base {
class SingleThreadTaskRunner;
@@ -25,13 +26,20 @@ class SingleThreadTaskRunner;
namespace cc {
class BeginFrameSource;
+class ChannelImpl;
+class ChannelMain;
class ContextProvider;
class InputHandlerClient;
class LayerTreeHost;
+class ProxyImpl;
+class ProxyMain;
class Scheduler;
class ScopedThreadProxy;
+class ThreadedChannel;
class CC_EXPORT ThreadProxy : public Proxy,
+ public ProxyMain,
+ public ProxyImpl,
NON_EXPORTED_BASE(LayerTreeHostImplClient),
NON_EXPORTED_BASE(SchedulerClient) {
public:
@@ -86,6 +94,10 @@ class CC_EXPORT ThreadProxy : public Proxy,
RendererCapabilities renderer_capabilities_main_thread_copy;
+ // TODO(khushalsagar): Make this scoped_ptr<ChannelMain> when ProxyMain
+ // and ProxyImpl are split.
+ ChannelMain* channel_main;
+
base::WeakPtrFactory<ThreadProxy> weak_factory;
};
@@ -144,6 +156,9 @@ class CC_EXPORT ThreadProxy : public Proxy,
BeginFrameArgs last_processed_begin_main_frame_args;
scoped_ptr<LayerTreeHostImpl> layer_tree_host_impl;
+
+ ChannelImpl* channel_impl;
David Trainor- moved to gerrit 2015/09/23 17:54:12 Can we comment on the fact that ProxyImpl doesn't
Khushal 2015/09/23 20:50:28 Done. ProxyImpl only holds a reference to ChannelI
+
base::WeakPtrFactory<ThreadProxy> weak_factory;
};
@@ -232,6 +247,16 @@ class CC_EXPORT ThreadProxy : public Proxy,
void SendBeginFramesToChildren(const BeginFrameArgs& args) override;
void SendBeginMainFrameNotExpectedSoon() override;
+ // ProxyMain implementation
+ base::WeakPtr<ProxyMain> GetMainWeakPtr() override;
+ void SetChannel(scoped_ptr<ThreadedChannel> threaded_channel) override;
+ void DidCompleteSwapBuffers() override;
+
+ // ProxyImpl implementation
+ base::WeakPtr<ProxyImpl> GetImplWeakPtr() override;
+ void SetThrottleFrameProductionOnImpl(bool throttle) override;
+ void SetLayerTreeHostClientReadyOnImpl() override;
+
protected:
ThreadProxy(
LayerTreeHost* layer_tree_host,
@@ -247,7 +272,6 @@ class CC_EXPORT ThreadProxy : public Proxy,
scoped_ptr<BeginMainFrameAndCommitState> begin_main_frame_state);
void BeginMainFrameNotExpectedSoon();
void DidCommitAndDrawFrame();
- void DidCompleteSwapBuffers();
void SetAnimationEvents(scoped_ptr<AnimationEventsVector> queue);
void DidLoseOutputSurface();
void RequestNewOutputSurface();
@@ -266,9 +290,7 @@ class CC_EXPORT ThreadProxy : public Proxy,
void BeginMainFrameAbortedOnImplThread(CommitEarlyOutReason reason);
void FinishAllRenderingOnImplThread(CompletionEvent* completion);
void InitializeImplOnImplThread(CompletionEvent* completion);
- void SetLayerTreeHostClientReadyOnImplThread();
void SetVisibleOnImplThread(CompletionEvent* completion, bool visible);
- void SetThrottleFrameProductionOnImplThread(bool throttle);
void HasInitializedOutputSurfaceOnImplThread(
CompletionEvent* completion,
bool* has_initialized_output_surface);
@@ -307,6 +329,9 @@ class CC_EXPORT ThreadProxy : public Proxy,
CompositorThreadOnly compositor_thread_vars_unsafe_;
CompositorThreadOnly& impl();
+ // TODO(khushalsagar): Remove this. Temporary variable to hold the channel.
+ scoped_ptr<ThreadedChannel> threaded_channel_;
+
base::WeakPtr<ThreadProxy> main_thread_weak_ptr_;
base::WeakPtr<ThreadProxy> impl_thread_weak_ptr_;

Powered by Google App Engine
This is Rietveld 408576698