| 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 f381da0eaddfc8f190cda971b0cfb1afac5abd6b..b90eb982b15268654af197a834e96b4156b87a1b 100644
|
| --- a/content/browser/compositor/delegated_frame_host.cc
|
| +++ b/content/browser/compositor/delegated_frame_host.cc
|
| @@ -410,7 +410,7 @@ void DelegatedFrameHost::SwapDelegatedFrame(
|
| }
|
| last_output_surface_id_ = output_surface_id;
|
| }
|
| - bool immediate_ack = !compositor_;
|
| + bool skip_frame_size_mismatch = false;
|
| pending_delegated_ack_count_++;
|
|
|
| if (frame_size.IsEmpty()) {
|
| @@ -447,10 +447,10 @@ void DelegatedFrameHost::SwapDelegatedFrame(
|
|
|
| gfx::Size desired_size = client_->DelegatedFrameHostDesiredSizeInDIP();
|
| if (desired_size != frame_size_in_dip && !desired_size.IsEmpty())
|
| - immediate_ack = true;
|
| + skip_frame_size_mismatch = true;
|
|
|
| cc::SurfaceFactory::DrawCallback ack_callback;
|
| - if (compositor_ && !immediate_ack) {
|
| + if (compositor_ && !skip_frame_size_mismatch) {
|
| ack_callback = base::Bind(&DelegatedFrameHost::SurfaceDrawn,
|
| AsWeakPtr(), output_surface_id);
|
| }
|
| @@ -486,7 +486,9 @@ void DelegatedFrameHost::SwapDelegatedFrame(
|
| client_->DelegatedFrameHostGetLayer()->OnDelegatedFrameDamage(
|
| damage_rect_in_dip);
|
|
|
| - if (immediate_ack) {
|
| + // Note that |compositor_| may be reset by SetShowSurface or
|
| + // SetShowDelegatedContent above.
|
| + if (!compositor_ || skip_frame_size_mismatch) {
|
| SendDelegatedFrameAck(output_surface_id);
|
| } else if (!use_surfaces_) {
|
| std::vector<ui::LatencyInfo>::const_iterator it;
|
|
|