| Index: cc/delegated_renderer_layer.cc | 
| diff --git a/cc/delegated_renderer_layer.cc b/cc/delegated_renderer_layer.cc | 
| index f1e10a564ac9957d1ba32e7edab8d1be234c0f35..30b9f9bce55565c803b224ee4ea9f6efc3ab6029 100644 | 
| --- a/cc/delegated_renderer_layer.cc | 
| +++ b/cc/delegated_renderer_layer.cc | 
| @@ -25,6 +25,10 @@ scoped_ptr<LayerImpl> DelegatedRendererLayer::createLayerImpl( | 
| tree_impl, m_layerId).PassAs<LayerImpl>(); | 
| } | 
|  | 
| +bool DelegatedRendererLayer::drawsContent() const { | 
| +  return !frame_size_.IsEmpty(); | 
| +} | 
| + | 
| void DelegatedRendererLayer::pushPropertiesTo(LayerImpl* impl) { | 
| Layer::pushPropertiesTo(impl); | 
|  | 
| @@ -33,10 +37,16 @@ void DelegatedRendererLayer::pushPropertiesTo(LayerImpl* impl) { | 
|  | 
| delegated_impl->SetDisplaySize(display_size_); | 
|  | 
| -  if (frame_data_) | 
| -    delegated_impl->SetFrameData(frame_data_.Pass(), damage_in_frame_); | 
| - | 
| -  damage_in_frame_ = gfx::RectF(); | 
| +  if (frame_data_) { | 
| +    if (frame_size_.IsEmpty()) { | 
| +      scoped_ptr<DelegatedFrameData> empty_frame(new DelegatedFrameData); | 
| +      delegated_impl->SetFrameData(empty_frame.Pass(), gfx::Rect()); | 
| +    } else { | 
| +      delegated_impl->SetFrameData(frame_data_.Pass(), damage_in_frame_); | 
| +    } | 
| +    frame_data_.reset(); | 
| +    damage_in_frame_ = gfx::RectF(); | 
| +  } | 
| } | 
|  | 
| void DelegatedRendererLayer::SetDisplaySize(gfx::Size size) { | 
| @@ -52,6 +62,9 @@ void DelegatedRendererLayer::SetFrameData( | 
| if (!frame_data_->render_pass_list.empty()) { | 
| RenderPass* root_pass = frame_data_->render_pass_list.back(); | 
| damage_in_frame_.Union(root_pass->damage_rect); | 
| +    frame_size_ = root_pass->output_rect.size(); | 
| +  } else { | 
| +    frame_size_ = gfx::Size(); | 
| } | 
| setNeedsCommit(); | 
| } | 
|  |