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

Side by Side Diff: cc/delegated_renderer_layer_impl.cc

Issue 12310179: cc: Without valid frame, delegated renderer layer is not drawable (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: morecleanup Created 7 years, 9 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/delegated_renderer_layer.cc ('k') | cc/layer_tree_host_unittest_delegated.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/delegated_renderer_layer_impl.h" 5 #include "cc/delegated_renderer_layer_impl.h"
6 6
7 #include "cc/append_quads_data.h" 7 #include "cc/append_quads_data.h"
8 #include "cc/delegated_frame_data.h" 8 #include "cc/delegated_frame_data.h"
9 #include "cc/layer_tree_impl.h" 9 #include "cc/layer_tree_impl.h"
10 #include "cc/math_util.h" 10 #include "cc/math_util.h"
(...skipping 26 matching lines...) Expand all
37 } 37 }
38 38
39 void DelegatedRendererLayerImpl::SetFrameData( 39 void DelegatedRendererLayerImpl::SetFrameData(
40 scoped_ptr<DelegatedFrameData> frame_data, 40 scoped_ptr<DelegatedFrameData> frame_data,
41 gfx::RectF damage_in_frame) { 41 gfx::RectF damage_in_frame) {
42 CreateChildIdIfNeeded(); 42 CreateChildIdIfNeeded();
43 DCHECK(child_id_); 43 DCHECK(child_id_);
44 44
45 // Display size is already set so we can compute what the damage rect 45 // Display size is already set so we can compute what the damage rect
46 // will be in layer space. 46 // will be in layer space.
47 RenderPass* new_root_pass = frame_data->render_pass_list.empty() ? 47 if (!frame_data->render_pass_list.empty()) {
48 NULL : frame_data->render_pass_list.back(); 48 RenderPass* new_root_pass = frame_data->render_pass_list.back();
49 bool new_frame_is_empty = !new_root_pass;
50
51 RenderPass* old_root_pass = render_passes_in_draw_order_.empty() ?
52 NULL : render_passes_in_draw_order_.back();
53 bool old_frame_is_empty = !old_root_pass;
54
55 gfx::RectF damage_in_layer;
56 if (new_frame_is_empty) {
57 if (!old_frame_is_empty)
58 damage_in_layer = gfx::Rect(bounds());
59 } else {
60 DCHECK(!new_root_pass->output_rect.IsEmpty()); 49 DCHECK(!new_root_pass->output_rect.IsEmpty());
61 damage_in_layer = MathUtil::mapClippedRect( 50 gfx::RectF damage_in_layer = MathUtil::mapClippedRect(
62 DelegatedFrameToLayerSpaceTransform(new_root_pass->output_rect.size()), 51 DelegatedFrameToLayerSpaceTransform(new_root_pass->output_rect.size()),
63 damage_in_frame); 52 damage_in_frame);
53 setUpdateRect(gfx::UnionRects(updateRect(), damage_in_layer));
64 } 54 }
65 setUpdateRect(gfx::UnionRects(updateRect(), damage_in_layer));
66 55
67 // TODO(danakj): Convert the resource ids the render passes and return data 56 // TODO(danakj): Convert the resource ids the render passes and return data
68 // for a frame ack. 57 // for a frame ack.
69 SetRenderPasses(frame_data->render_pass_list); 58 SetRenderPasses(frame_data->render_pass_list);
70 } 59 }
71 60
72 void DelegatedRendererLayerImpl::SetDisplaySize(gfx::Size size) { 61 void DelegatedRendererLayerImpl::SetDisplaySize(gfx::Size size) {
73 if (display_size_ == size) 62 if (display_size_ == size)
74 return; 63 return;
75 display_size_ = size; 64 display_size_ = size;
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 void DelegatedRendererLayerImpl::ClearChildId() { 276 void DelegatedRendererLayerImpl::ClearChildId() {
288 if (!child_id_) 277 if (!child_id_)
289 return; 278 return;
290 279
291 ResourceProvider* resource_provider = layerTreeImpl()->resource_provider(); 280 ResourceProvider* resource_provider = layerTreeImpl()->resource_provider();
292 resource_provider->destroyChild(child_id_); 281 resource_provider->destroyChild(child_id_);
293 child_id_ = 0; 282 child_id_ = 0;
294 } 283 }
295 284
296 } // namespace cc 285 } // namespace cc
OLDNEW
« no previous file with comments | « cc/delegated_renderer_layer.cc ('k') | cc/layer_tree_host_unittest_delegated.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698