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 2be0077a8f15d892d4b4dd1b49d124a8391c8ede..008a1368ba16204240abeea5f0ac9759503d2a02 100644 |
--- a/content/browser/renderer_host/compositor_impl_android.cc |
+++ b/content/browser/renderer_host/compositor_impl_android.cc |
@@ -281,10 +281,9 @@ void CompositorImpl::Composite(CompositingTrigger trigger) { |
if (!factory->GetGpuChannel() || factory->GetGpuChannel()->IsLost()) { |
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; |
} |
@@ -331,10 +330,6 @@ void CompositorImpl::Composite(CompositingTrigger trigger) { |
root_window_->RequestVSyncUpdate(); |
} |
-void CompositorImpl::OnGpuChannelEstablished() { |
- ScheduleComposite(); |
-} |
- |
UIResourceProvider& CompositorImpl::GetUIResourceProvider() { |
return ui_resource_provider_; |
} |
@@ -500,8 +495,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; |
@@ -521,11 +532,11 @@ 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>()); |
no sievers
2014/06/23 19:53:58
either return here or if-else
enne (OOO)
2014/06/24 22:20:06
Oops! Good catch. Done.
|
} |
- return scoped_ptr<cc::OutputSurface>( |
- new OutputSurfaceWithoutParent(context_provider)); |
+ host_->SetOutputSurface(scoped_ptr<cc::OutputSurface>( |
+ new OutputSurfaceWithoutParent(context_provider))); |
} |
void CompositorImpl::OnLostResources() { |