Chromium Code Reviews| Index: content/browser/renderer_host/compositor_impl_android.cc | 
| diff --git a/content/browser/renderer_host/compositor_impl_android.cc b/content/browser/renderer_host/compositor_impl_android.cc | 
| index 31a5d2d018d699b9b9d1c038a080da6d376d326c..bc2709c3eef96c96b196d7012befbf414dd5a6a1 100644 | 
| --- a/content/browser/renderer_host/compositor_impl_android.cc | 
| +++ b/content/browser/renderer_host/compositor_impl_android.cc | 
| @@ -301,10 +301,9 @@ void CompositorImpl::Composite(CompositingTrigger trigger) { | 
| if (!factory->GetGpuChannel() || factory->GetGpuChannel()->IsLost()) { | 
| 
 
no sievers
2014/09/25 17:59:29
Can 301-308 actually be removed now that LTH::Comp
 
enne (OOO)
2014/09/25 19:05:05
If you don't mind me punting, I was going to remov
 
 | 
| CauseForGpuLaunch cause = | 
| CAUSE_FOR_GPU_LAUNCH_WEBGRAPHICSCONTEXT3DCOMMANDBUFFERIMPL_INITIALIZE; | 
| - factory->EstablishGpuChannel( | 
| - cause, | 
| - base::Bind(&CompositorImpl::OnGpuChannelEstablished, | 
| - weak_factory_.GetWeakPtr())); | 
| + factory->EstablishGpuChannel(cause, | 
| + base::Bind(&CompositorImpl::ScheduleComposite, | 
| + weak_factory_.GetWeakPtr())); | 
| return; | 
| } | 
| @@ -351,10 +350,6 @@ void CompositorImpl::Composite(CompositingTrigger trigger) { | 
| root_window_->RequestVSyncUpdate(); | 
| } | 
| -void CompositorImpl::OnGpuChannelEstablished() { | 
| - ScheduleComposite(); | 
| -} | 
| - | 
| UIResourceProvider& CompositorImpl::GetUIResourceProvider() { | 
| return ui_resource_provider_; | 
| } | 
| @@ -548,8 +543,24 @@ void CompositorImpl::Layout() { | 
| ignore_schedule_composite_ = false; | 
| } | 
| -scoped_ptr<cc::OutputSurface> CompositorImpl::CreateOutputSurface( | 
| - bool fallback) { | 
| +void CompositorImpl::RequestNewOutputSurface(bool fallback) { | 
| + BrowserGpuChannelHostFactory* factory = | 
| + BrowserGpuChannelHostFactory::instance(); | 
| + if (!factory->GetGpuChannel() || factory->GetGpuChannel()->IsLost()) { | 
| + CauseForGpuLaunch cause = | 
| + CAUSE_FOR_GPU_LAUNCH_WEBGRAPHICSCONTEXT3DCOMMANDBUFFERIMPL_INITIALIZE; | 
| + factory->EstablishGpuChannel( | 
| + cause, | 
| + base::Bind(&CompositorImpl::CreateOutputSurface, | 
| + weak_factory_.GetWeakPtr(), | 
| + fallback)); | 
| + return; | 
| + } | 
| + | 
| + CreateOutputSurface(fallback); | 
| +} | 
| + | 
| +void CompositorImpl::CreateOutputSurface(bool fallback) { | 
| blink::WebGraphicsContext3D::Attributes attrs; | 
| attrs.shareResources = true; | 
| attrs.noAutomaticFlushes = true; | 
| @@ -569,11 +580,13 @@ scoped_ptr<cc::OutputSurface> CompositorImpl::CreateOutputSurface( | 
| } | 
| if (!context_provider.get()) { | 
| LOG(ERROR) << "Failed to create 3D context for compositor."; | 
| - return scoped_ptr<cc::OutputSurface>(); | 
| + host_->SetOutputSurface(scoped_ptr<cc::OutputSurface>()); | 
| + return; | 
| } | 
| - return scoped_ptr<cc::OutputSurface>(new OutputSurfaceWithoutParent( | 
| - context_provider, weak_factory_.GetWeakPtr())); | 
| + host_->SetOutputSurface( | 
| + scoped_ptr<cc::OutputSurface>(new OutputSurfaceWithoutParent( | 
| + context_provider, weak_factory_.GetWeakPtr()))); | 
| } | 
| void CompositorImpl::PopulateGpuCapabilities( |