Index: content/browser/compositor/delegated_frame_host.cc |
diff --git a/content/browser/compositor/delegated_frame_host.cc b/content/browser/compositor/delegated_frame_host.cc |
index 488b138b772e158b706c4e870f7a43c45bc738ae..95349cb9a2b22ce9d1c824203d677ced8ab28899 100644 |
--- a/content/browser/compositor/delegated_frame_host.cc |
+++ b/content/browser/compositor/delegated_frame_host.cc |
@@ -360,6 +360,7 @@ void DelegatedFrameHost::SwapDelegatedFrame( |
last_output_surface_id_ = output_surface_id; |
} |
bool modified_layers = false; |
+ ui::Compositor* compositor = client_->GetCompositor(); |
if (frame_size.IsEmpty()) { |
DCHECK(frame_data->resource_list.empty()); |
EvictDelegatedFrame(); |
@@ -388,12 +389,14 @@ void DelegatedFrameHost::SwapDelegatedFrame( |
scoped_ptr<cc::CompositorFrame> compositor_frame = |
make_scoped_ptr(new cc::CompositorFrame()); |
compositor_frame->delegated_frame_data = frame_data.Pass(); |
+ base::Closure ack_callback; |
+ if (compositor) { |
+ ack_callback = base::Bind(&DelegatedFrameHost::SendDelegatedFrameAck, |
+ AsWeakPtr(), |
+ output_surface_id); |
+ } |
surface_factory_->SubmitFrame( |
- surface_id_, |
- compositor_frame.Pass(), |
- base::Bind(&DelegatedFrameHost::SendDelegatedFrameAck, |
- AsWeakPtr(), |
- output_surface_id)); |
+ surface_id_, compositor_frame.Pass(), ack_callback); |
} else { |
if (!resource_collection_.get()) { |
resource_collection_ = new cc::DelegatedFrameResourceCollection; |
@@ -429,7 +432,6 @@ void DelegatedFrameHost::SwapDelegatedFrame( |
pending_delegated_ack_count_++; |
- ui::Compositor* compositor = client_->GetCompositor(); |
if (!compositor) { |
SendDelegatedFrameAck(output_surface_id); |
} else if (!use_surfaces_) { |