| Index: cc/delegated_renderer_layer.cc
|
| diff --git a/cc/delegated_renderer_layer.cc b/cc/delegated_renderer_layer.cc
|
| index 7e06e4fc52938ec8b6320040cee530b262caf852..297a5e894573fdfd772259937c17eb0b57958cf8 100644
|
| --- a/cc/delegated_renderer_layer.cc
|
| +++ b/cc/delegated_renderer_layer.cc
|
| @@ -37,10 +37,11 @@ void DelegatedRendererLayer::pushPropertiesTo(LayerImpl* impl) {
|
|
|
| delegated_impl->SetDisplaySize(display_size_);
|
|
|
| - if (!frame_data_)
|
| - return;
|
| -
|
| - if (frame_size_.IsEmpty()) {
|
| + if (!frame_data_) {
|
| + delegated_impl->SetFrameData(scoped_ptr<DelegatedFrameData>(),
|
| + gfx::Rect(),
|
| + &unused_resources_for_child_compositor_);
|
| + } else if (frame_size_.IsEmpty()) {
|
| scoped_ptr<DelegatedFrameData> empty_frame(new DelegatedFrameData);
|
| delegated_impl->SetFrameData(empty_frame.Pass(),
|
| gfx::Rect(),
|
| @@ -75,6 +76,16 @@ void DelegatedRendererLayer::SetFrameData(
|
| RenderPass* root_pass = frame_data_->render_pass_list.back();
|
| damage_in_frame_.Union(root_pass->damage_rect);
|
| frame_size_ = root_pass->output_rect.size();
|
| +
|
| + // TODO(danakj): This could be optimized to only add resources to the
|
| + // frame_data_ if they are actually used in the frame. For now, it will
|
| + // cause the parent (this layer) to hold onto some resources it doesn't
|
| + // need to for an extra frame.
|
| + for (size_t i = 0; i < unused_resources_for_child_compositor_.size(); ++i) {
|
| + frame_data_->resource_list.push_back(
|
| + unused_resources_for_child_compositor_[i]);
|
| + }
|
| + unused_resources_for_child_compositor_.clear();
|
| } else {
|
| frame_size_ = gfx::Size();
|
| }
|
|
|