Index: cc/trees/thread_proxy.cc |
diff --git a/cc/trees/thread_proxy.cc b/cc/trees/thread_proxy.cc |
index f2c3ce893b709ee3f330baf179cde94a96f283d6..89580040bb3e0a53e24b6e5ab9cba0cf7425cbef 100644 |
--- a/cc/trees/thread_proxy.cc |
+++ b/cc/trees/thread_proxy.cc |
@@ -267,8 +267,9 @@ |
TRACE_EVENT0("cc", "ThreadProxy::DoCreateAndInitializeOutputSurface"); |
DCHECK(IsMainThread()); |
- scoped_ptr<OutputSurface> output_surface = |
- layer_tree_host()->CreateOutputSurface(); |
+ scoped_ptr<OutputSurface> output_surface = first_output_surface_.Pass(); |
+ if (!output_surface) |
+ output_surface = layer_tree_host()->CreateOutputSurface(); |
RendererCapabilities capabilities; |
bool success = !!output_surface; |
@@ -641,9 +642,10 @@ |
return contents_texture_manager_unsafe_; |
} |
-void ThreadProxy::Start() { |
+void ThreadProxy::Start(scoped_ptr<OutputSurface> first_output_surface) { |
DCHECK(IsMainThread()); |
DCHECK(Proxy::HasImplThread()); |
+ DCHECK(first_output_surface); |
// Create LayerTreeHostImpl. |
DebugScopedSetMainThreadBlocked main_thread_blocked(this); |
@@ -656,6 +658,7 @@ |
completion.Wait(); |
main_thread_weak_ptr_ = weak_factory_.GetWeakPtr(); |
+ first_output_surface_ = first_output_surface.Pass(); |
started_ = true; |
} |