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

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: cleanup 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 28 matching lines...) Expand all
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 RenderPass* new_root_pass = frame_data->render_pass_list.empty() ?
48 NULL : frame_data->render_pass_list.back(); 48 NULL : frame_data->render_pass_list.back();
49 bool new_frame_is_empty = !new_root_pass;
50 49
51 RenderPass* old_root_pass = render_passes_in_draw_order_.empty() ? 50 if (new_root_pass) {
piman 2013/02/27 21:04:35 pushing even slightly further, you can save an if
danakj 2013/02/27 21:05:27 True! Let's see how the remap CL looks, I can do t
danakj 2013/02/27 21:40:45 Oh right, this is waiting on CQ from another CL an
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()); 51 DCHECK(!new_root_pass->output_rect.IsEmpty());
61 damage_in_layer = MathUtil::mapClippedRect( 52 gfx::RectF damage_in_layer = MathUtil::mapClippedRect(
62 DelegatedFrameToLayerSpaceTransform(new_root_pass->output_rect.size()), 53 DelegatedFrameToLayerSpaceTransform(new_root_pass->output_rect.size()),
63 damage_in_frame); 54 damage_in_frame);
55 setUpdateRect(gfx::UnionRects(updateRect(), damage_in_layer));
64 } 56 }
65 setUpdateRect(gfx::UnionRects(updateRect(), damage_in_layer));
66 57
67 // TODO(danakj): Convert the resource ids the render passes and return data 58 // TODO(danakj): Convert the resource ids the render passes and return data
68 // for a frame ack. 59 // for a frame ack.
69 SetRenderPasses(frame_data->render_pass_list); 60 SetRenderPasses(frame_data->render_pass_list);
70 } 61 }
71 62
72 void DelegatedRendererLayerImpl::SetDisplaySize(gfx::Size size) { 63 void DelegatedRendererLayerImpl::SetDisplaySize(gfx::Size size) {
73 if (display_size_ == size) 64 if (display_size_ == size)
74 return; 65 return;
75 display_size_ = size; 66 display_size_ = size;
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 void DelegatedRendererLayerImpl::ClearChildId() { 278 void DelegatedRendererLayerImpl::ClearChildId() {
288 if (!child_id_) 279 if (!child_id_)
289 return; 280 return;
290 281
291 ResourceProvider* resource_provider = layerTreeImpl()->resource_provider(); 282 ResourceProvider* resource_provider = layerTreeImpl()->resource_provider();
292 resource_provider->destroyChild(child_id_); 283 resource_provider->destroyChild(child_id_);
293 child_id_ = 0; 284 child_id_ = 0;
294 } 285 }
295 286
296 } // namespace cc 287 } // 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