Index: content/browser/aura/gpu_process_transport_factory.cc |
diff --git a/content/browser/aura/gpu_process_transport_factory.cc b/content/browser/aura/gpu_process_transport_factory.cc |
index 382c6a6fe7f5ad25c391ca097703c0305213c274..ff0d2f539cfd35e4b42ab9f68db4206c6775bf84 100644 |
--- a/content/browser/aura/gpu_process_transport_factory.cc |
+++ b/content/browser/aura/gpu_process_transport_factory.cc |
@@ -13,6 +13,7 @@ |
#include "cc/output/compositor_frame.h" |
#include "cc/output/output_surface.h" |
#include "content/browser/aura/browser_compositor_output_surface.h" |
+#include "content/browser/aura/browser_compositor_output_surface_capturer.h" |
#include "content/browser/aura/browser_compositor_output_surface_proxy.h" |
#include "content/browser/aura/reflector_impl.h" |
#include "content/browser/aura/software_browser_compositor_output_surface.h" |
@@ -251,12 +252,11 @@ scoped_ptr<cc::OutputSurface> GpuProcessTransportFactory::CreateOutputSurface( |
compositor_thread_task_runner.get()); |
scoped_ptr<BrowserCompositorOutputSurface> surface( |
- new BrowserCompositorOutputSurface( |
- context_provider, |
- per_compositor_data_[compositor]->surface_id, |
- &output_surface_map_, |
- base::MessageLoopProxy::current().get(), |
- compositor->AsWeakPtr())); |
+ new BrowserCompositorOutputSurface(context_provider, |
+ data->surface_id, |
+ &output_surface_map_, |
+ base::MessageLoopProxy::current(), |
+ compositor->AsWeakPtr())); |
if (data->reflector.get()) { |
data->reflector->CreateSharedTexture(); |
data->reflector->AttachToOutputSurface(surface.get()); |
@@ -307,10 +307,30 @@ void GpuProcessTransportFactory::RemoveCompositor(ui::Compositor* compositor) { |
bool GpuProcessTransportFactory::DoesCreateTestContexts() { return false; } |
+scoped_ptr<SurfaceCapturer> |
+GpuProcessTransportFactory::CreateOutputSurfaceCapturer( |
+ ui::Compositor* compositor, |
+ SurfaceCapturer::Client* client) { |
+ scoped_ptr<SurfaceCapturer> capturer; |
+ PerCompositorDataMap::iterator it = per_compositor_data_.find(compositor); |
+ if (it == per_compositor_data_.end()) |
+ return capturer.Pass(); |
+ PerCompositorData* data = it->second; |
+ DCHECK(data); |
+ capturer.reset(new BrowserCompositorOutputSurfaceCapturer( |
+ &output_surface_map_, data->surface_id, client)); |
+ return capturer.Pass(); |
+} |
+ |
ui::ContextFactory* GpuProcessTransportFactory::AsContextFactory() { |
return this; |
} |
+SurfaceCapturingContextFactory* |
+GpuProcessTransportFactory::AsSurfaceCapturingContextFactory() { |
+ return this; |
+} |
+ |
gfx::GLSurfaceHandle GpuProcessTransportFactory::CreateSharedSurfaceHandle() { |
CreateSharedContextLazy(); |
if (!shared_contexts_main_thread_ || |