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 eeb6f3bc5786e443ad978d6774313073365d37de..1c5f9625fd2b77d18302d82d68deda43bf747e55 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" |
@@ -250,9 +251,9 @@ scoped_ptr<cc::OutputSurface> GpuProcessTransportFactory::CreateOutputSurface( |
scoped_ptr<BrowserCompositorOutputSurface> surface( |
new BrowserCompositorOutputSurface( |
context.PassAs<WebKit::WebGraphicsContext3D>(), |
- per_compositor_data_[compositor]->surface_id, |
+ data->surface_id, |
&output_surface_map_, |
- base::MessageLoopProxy::current().get(), |
+ base::MessageLoopProxy::current(), |
compositor->AsWeakPtr())); |
if (data->reflector.get()) { |
data->reflector->CreateSharedTexture(); |
@@ -304,10 +305,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_ || |