Index: content/browser/renderer_host/delegated_frame_host.cc |
diff --git a/content/browser/renderer_host/delegated_frame_host.cc b/content/browser/renderer_host/delegated_frame_host.cc |
index 2457eaef2925f40e7241def67cbd9667dd6f98ad..c922d8a282eaa0c2ceea12ae5ec23c70380f2edb 100644 |
--- a/content/browser/renderer_host/delegated_frame_host.cc |
+++ b/content/browser/renderer_host/delegated_frame_host.cc |
@@ -82,6 +82,8 @@ DelegatedFrameHost::DelegatedFrameHost(const cc::FrameSinkId& frame_sink_id, |
factory->GetSurfaceManager()->RegisterFrameSinkId(frame_sink_id_); |
factory->GetSurfaceManager()->RegisterSurfaceFactoryClient(frame_sink_id_, |
this); |
+ surface_factory_ = base::MakeUnique<cc::SurfaceFactory>( |
+ frame_sink_id_, factory->GetSurfaceManager(), this); |
} |
void DelegatedFrameHost::WasShown(const ui::LatencyInfo& latency_info) { |
@@ -387,7 +389,7 @@ void DelegatedFrameHost::AttemptFrameSubscriberCapture( |
subscriber_texture->target())); |
} |
- if (surface_factory_.get()) { |
+ if (!local_frame_id_.is_null()) { |
// To avoid unnecessary composites, go directly to the Surface rather than |
// through RequestCopyOfOutput (which goes through the browser |
// compositor). |
@@ -456,7 +458,7 @@ void DelegatedFrameHost::SwapDelegatedFrame(uint32_t compositor_frame_sink_id, |
// the DelegatedRendererLayer. |
EvictDelegatedFrame(); |
- surface_factory_.reset(); |
+ surface_factory_->Reset(); |
if (!surface_returned_resources_.empty()) { |
SendReclaimCompositorResources(last_compositor_frame_sink_id_, |
false /* is_swap_ack */); |
@@ -474,10 +476,6 @@ void DelegatedFrameHost::SwapDelegatedFrame(uint32_t compositor_frame_sink_id, |
} else { |
ImageTransportFactory* factory = ImageTransportFactory::GetInstance(); |
cc::SurfaceManager* manager = factory->GetSurfaceManager(); |
- if (!surface_factory_) { |
- surface_factory_ = |
- base::MakeUnique<cc::SurfaceFactory>(frame_sink_id_, manager, this); |
- } |
if (local_frame_id_.is_null() || frame_size != current_surface_size_ || |
frame_size_in_dip != current_frame_size_in_dip_) { |
if (!local_frame_id_.is_null()) |