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(); |
} |