| Index: content/renderer/render_widget.cc
|
| diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
|
| index 4ec16f2d177953a9ad1d950384084f77bfbe669a..a2e1064081b3803a7885edb4a7a74796ff1807cd 100644
|
| --- a/content/renderer/render_widget.cc
|
| +++ b/content/renderer/render_widget.cc
|
| @@ -992,6 +992,7 @@ scoped_ptr<cc::OutputSurface> RenderWidget::CreateOutputSurface(bool fallback) {
|
| use_software = true;
|
|
|
| scoped_refptr<ContextProviderCommandBuffer> context_provider;
|
| + scoped_refptr<ContextProviderCommandBuffer> worker_context_provider;
|
| if (!use_software) {
|
| context_provider = ContextProviderCommandBuffer::Create(
|
| CreateGraphicsContext3D(), "RenderCompositor");
|
| @@ -999,14 +1000,21 @@ scoped_ptr<cc::OutputSurface> RenderWidget::CreateOutputSurface(bool fallback) {
|
| // Cause the compositor to wait and try again.
|
| return scoped_ptr<cc::OutputSurface>();
|
| }
|
| +
|
| + worker_context_provider = ContextProviderCommandBuffer::Create(
|
| + CreateGraphicsContext3D(), "RenderWorker");
|
| + if (!worker_context_provider.get()) {
|
| + // Cause the compositor to wait and try again.
|
| + return scoped_ptr<cc::OutputSurface>();
|
| + }
|
| }
|
|
|
| uint32 output_surface_id = next_output_surface_id_++;
|
| if (command_line.HasSwitch(switches::kEnableDelegatedRenderer)) {
|
| DCHECK(compositor_deps_->GetCompositorImplThreadTaskRunner());
|
| return scoped_ptr<cc::OutputSurface>(new DelegatedCompositorOutputSurface(
|
| - routing_id(), output_surface_id, context_provider, nullptr,
|
| - frame_swap_message_queue_));
|
| + routing_id(), output_surface_id, context_provider,
|
| + worker_context_provider, frame_swap_message_queue_));
|
| }
|
| if (!context_provider.get()) {
|
| scoped_ptr<cc::SoftwareOutputDevice> software_device(
|
| @@ -1026,15 +1034,15 @@ scoped_ptr<cc::OutputSurface> RenderWidget::CreateOutputSurface(bool fallback) {
|
| if (base::SysInfo::IsLowEndDevice())
|
| format = cc::RGB_565;
|
| return scoped_ptr<cc::OutputSurface>(new MailboxOutputSurface(
|
| - routing_id(), output_surface_id, context_provider, nullptr,
|
| - scoped_ptr<cc::SoftwareOutputDevice>(), frame_swap_message_queue_,
|
| - format));
|
| + routing_id(), output_surface_id, context_provider,
|
| + worker_context_provider, scoped_ptr<cc::SoftwareOutputDevice>(),
|
| + frame_swap_message_queue_, format));
|
| }
|
| bool use_swap_compositor_frame_message = false;
|
| return scoped_ptr<cc::OutputSurface>(new CompositorOutputSurface(
|
| - routing_id(), output_surface_id, context_provider, nullptr,
|
| - scoped_ptr<cc::SoftwareOutputDevice>(), frame_swap_message_queue_,
|
| - use_swap_compositor_frame_message));
|
| + routing_id(), output_surface_id, context_provider,
|
| + worker_context_provider, scoped_ptr<cc::SoftwareOutputDevice>(),
|
| + frame_swap_message_queue_, use_swap_compositor_frame_message));
|
| }
|
|
|
| void RenderWidget::OnSwapBuffersAborted() {
|
|
|