Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1443)

Unified Diff: cc/delegated_renderer_layer.cc

Issue 12340124: cc: Receive and remap resources to the parent. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: whitespace Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/cc_tests.gyp ('k') | cc/delegated_renderer_layer_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/delegated_renderer_layer.cc
diff --git a/cc/delegated_renderer_layer.cc b/cc/delegated_renderer_layer.cc
index 30b9f9bce55565c803b224ee4ea9f6efc3ab6029..c6d6779eff27c61ddfe12d124651f335b733fdbe 100644
--- a/cc/delegated_renderer_layer.cc
+++ b/cc/delegated_renderer_layer.cc
@@ -37,16 +37,22 @@ void DelegatedRendererLayer::pushPropertiesTo(LayerImpl* impl) {
delegated_impl->SetDisplaySize(display_size_);
- 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();
+ if (!frame_data_)
+ return;
+
+ // TODO(danakj): Save these resources somewhere where we can collect them for
+ // the frame ack.
+ TransferableResourceArray resources_for_ack;
+ if (frame_size_.IsEmpty()) {
+ scoped_ptr<DelegatedFrameData> empty_frame(new DelegatedFrameData);
+ delegated_impl->SetFrameData(
+ empty_frame.Pass(), gfx::Rect(), &resources_for_ack);
+ } else {
+ delegated_impl->SetFrameData(
+ frame_data_.Pass(), damage_in_frame_, &resources_for_ack);
}
+ frame_data_.reset();
+ damage_in_frame_ = gfx::RectF();
}
void DelegatedRendererLayer::SetDisplaySize(gfx::Size size) {
@@ -58,6 +64,13 @@ void DelegatedRendererLayer::SetDisplaySize(gfx::Size size) {
void DelegatedRendererLayer::SetFrameData(
scoped_ptr<DelegatedFrameData> new_frame_data) {
+ if (frame_data_) {
+ // Copy the resources from the last provided frame into the new frame, as
+ // it may use resources that were transferred in the last frame.
+ new_frame_data->resource_list.insert(new_frame_data->resource_list.end(),
+ frame_data_->resource_list.begin(),
+ frame_data_->resource_list.end());
+ }
frame_data_ = new_frame_data.Pass();
if (!frame_data_->render_pass_list.empty()) {
RenderPass* root_pass = frame_data_->render_pass_list.back();
« no previous file with comments | « cc/cc_tests.gyp ('k') | cc/delegated_renderer_layer_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698