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

Side by Side Diff: cc/trees/layer_tree_host_common.cc

Issue 12676029: cc: Fix capitalization style in chromified files. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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/trees/layer_tree_host_common.h ('k') | cc/trees/layer_tree_host_impl.h » ('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 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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/trees/layer_tree_host_common.h" 5 #include "cc/trees/layer_tree_host_common.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/debug/trace_event.h" 9 #include "base/debug/trace_event.h"
10 #include "cc/base/math_util.h" 10 #include "cc/base/math_util.h"
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 if (!layer->DrawsContent() || layer->content_bounds().IsEmpty() || 150 if (!layer->DrawsContent() || layer->content_bounds().IsEmpty() ||
151 layer->drawable_content_rect().IsEmpty()) 151 layer->drawable_content_rect().IsEmpty())
152 return gfx::Rect(); 152 return gfx::Rect();
153 153
154 // Compute visible bounds in target surface space. 154 // Compute visible bounds in target surface space.
155 gfx::Rect visible_rect_in_target_surface_space = 155 gfx::Rect visible_rect_in_target_surface_space =
156 layer->drawable_content_rect(); 156 layer->drawable_content_rect();
157 157
158 if (!layer->render_target()->render_surface()->clip_rect().IsEmpty()) { 158 if (!layer->render_target()->render_surface()->clip_rect().IsEmpty()) {
159 // In this case the target surface does clip layers that contribute to 159 // In this case the target surface does clip layers that contribute to
160 // it. So, we have to convert the current surface's clipRect from its 160 // it. So, we have to convert the current surface's clip rect from its
161 // ancestor surface space to the current (descendant) surface 161 // ancestor surface space to the current (descendant) surface
162 // space. This conversion is done outside this function so that it can 162 // space. This conversion is done outside this function so that it can
163 // be cached instead of computing it redundantly for every layer. 163 // be cached instead of computing it redundantly for every layer.
164 visible_rect_in_target_surface_space.Intersect( 164 visible_rect_in_target_surface_space.Intersect(
165 ancestor_clip_rect_in_descendant_surface_space); 165 ancestor_clip_rect_in_descendant_surface_space);
166 } 166 }
167 167
168 if (visible_rect_in_target_surface_space.IsEmpty()) 168 if (visible_rect_in_target_surface_space.IsEmpty())
169 return gfx::Rect(); 169 return gfx::Rect();
170 170
(...skipping 20 matching lines...) Expand all
191 template <typename LayerType> 191 template <typename LayerType>
192 static bool LayerShouldBeSkipped(LayerType* layer) { 192 static bool LayerShouldBeSkipped(LayerType* layer) {
193 // Layers can be skipped if any of these conditions are met. 193 // Layers can be skipped if any of these conditions are met.
194 // - does not draw content. 194 // - does not draw content.
195 // - is transparent 195 // - is transparent
196 // - has empty bounds 196 // - has empty bounds
197 // - the layer is not double-sided, but its back face is visible. 197 // - the layer is not double-sided, but its back face is visible.
198 // 198 //
199 // Some additional conditions need to be computed at a later point after the 199 // Some additional conditions need to be computed at a later point after the
200 // recursion is finished. 200 // recursion is finished.
201 // - the intersection of render surface content and layer clipRect is empty 201 // - the intersection of render_surface content and layer clip_rect is empty
202 // - the visibleContentRect is empty 202 // - the visible_content_rect is empty
203 // 203 //
204 // Note, if the layer should not have been drawn due to being fully 204 // Note, if the layer should not have been drawn due to being fully
205 // transparent, we would have skipped the entire subtree and never made it 205 // transparent, we would have skipped the entire subtree and never made it
206 // into this function, so it is safe to omit this check here. 206 // into this function, so it is safe to omit this check here.
207 207
208 if (!layer->DrawsContent() || layer->bounds().IsEmpty()) 208 if (!layer->DrawsContent() || layer->bounds().IsEmpty())
209 return true; 209 return true;
210 210
211 LayerType* backface_test_layer = layer; 211 LayerType* backface_test_layer = layer;
212 if (layer->use_parent_backface_visibility()) { 212 if (layer->use_parent_backface_visibility()) {
(...skipping 24 matching lines...) Expand all
237 // unreliable (since the impl thread may be using a different opacity), so it 237 // unreliable (since the impl thread may be using a different opacity), so it
238 // should not be trusted. 238 // should not be trusted.
239 // In particular, it should not cause the subtree to be skipped. 239 // In particular, it should not cause the subtree to be skipped.
240 // Similarly, for layers that might animate opacity using an impl-only 240 // Similarly, for layers that might animate opacity using an impl-only
241 // animation, their subtree should also not be skipped. 241 // animation, their subtree should also not be skipped.
242 return !layer->opacity() && !layer->OpacityIsAnimating() && 242 return !layer->opacity() && !layer->OpacityIsAnimating() &&
243 !layer->OpacityCanAnimateOnImplThread(); 243 !layer->OpacityCanAnimateOnImplThread();
244 } 244 }
245 245
246 // Called on each layer that could be drawn after all information from 246 // Called on each layer that could be drawn after all information from
247 // calcDrawProperties has been updated on that layer. May have some false 247 // CalcDrawProperties has been updated on that layer. May have some false
248 // positives (e.g. layers get this called on them but don't actually get drawn). 248 // positives (e.g. layers get this called on them but don't actually get drawn).
249 static inline void UpdateTilePrioritiesForLayer(LayerImpl* layer) { 249 static inline void UpdateTilePrioritiesForLayer(LayerImpl* layer) {
250 layer->UpdateTilePriorities(); 250 layer->UpdateTilePriorities();
251 251
252 // Mask layers don't get this call, so explicitly update them so they can 252 // Mask layers don't get this call, so explicitly update them so they can
253 // kick off tile rasterization. 253 // kick off tile rasterization.
254 if (layer->mask_layer()) 254 if (layer->mask_layer())
255 layer->mask_layer()->UpdateTilePriorities(); 255 layer->mask_layer()->UpdateTilePriorities();
256 if (layer->replica_layer() && layer->replica_layer()->mask_layer()) 256 if (layer->replica_layer() && layer->replica_layer()->mask_layer())
257 layer->replica_layer()->mask_layer()->UpdateTilePriorities(); 257 layer->replica_layer()->mask_layer()->UpdateTilePriorities();
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 // 345 //
346 // Step 1. transform from target surface space to the exact space where 346 // Step 1. transform from target surface space to the exact space where
347 // scroll_delta is actually applied. 347 // scroll_delta is actually applied.
348 // -- this is inverse of the matrix in step 3 348 // -- this is inverse of the matrix in step 3
349 // Step 2. undo the scroll_delta 349 // Step 2. undo the scroll_delta
350 // -- this is just a translation by scroll_delta. 350 // -- this is just a translation by scroll_delta.
351 // Step 3. transform back to target surface space. 351 // Step 3. transform back to target surface space.
352 // -- this transform is the "partial_layer_origin_transform" = 352 // -- this transform is the "partial_layer_origin_transform" =
353 // (parent_matrix * scale(layer->pageScaleDelta())); 353 // (parent_matrix * scale(layer->pageScaleDelta()));
354 // 354 //
355 // These steps create a matrix that both start and end in targetSurfaceSpace. 355 // These steps create a matrix that both start and end in target surface
356 // So this matrix can pre-multiply any fixed-position layer's draw_transform 356 // space. So this matrix can pre-multiply any fixed-position layer's
357 // to undo the scroll_deltas -- as long as that fixed position layer is fixed 357 // draw_transform to undo the scroll_deltas -- as long as that fixed position
358 // onto the same render_target as this scrolling_layer. 358 // layer is fixed onto the same render_target as this scrolling_layer.
359 // 359 //
360 360
361 gfx::Transform partial_layer_origin_transform = parent_matrix; 361 gfx::Transform partial_layer_origin_transform = parent_matrix;
362 partial_layer_origin_transform.PreconcatTransform( 362 partial_layer_origin_transform.PreconcatTransform(
363 scrolling_layer->impl_transform()); 363 scrolling_layer->impl_transform());
364 364
365 gfx::Transform scroll_compensation_for_this_layer = 365 gfx::Transform scroll_compensation_for_this_layer =
366 partial_layer_origin_transform; // Step 3 366 partial_layer_origin_transform; // Step 3
367 scroll_compensation_for_this_layer.Translate( 367 scroll_compensation_for_this_layer.Translate(
368 scrolling_layer->scroll_delta().x(), 368 scrolling_layer->scroll_delta().x(),
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 423
424 // Start as identity matrix. 424 // Start as identity matrix.
425 gfx::Transform next_scroll_compensation_matrix; 425 gfx::Transform next_scroll_compensation_matrix;
426 426
427 // If this layer is not a container, then it inherits the existing scroll 427 // If this layer is not a container, then it inherits the existing scroll
428 // compensations. 428 // compensations.
429 if (!layer->is_container_for_fixed_position_layers()) 429 if (!layer->is_container_for_fixed_position_layers())
430 next_scroll_compensation_matrix = current_scroll_compensation_matrix; 430 next_scroll_compensation_matrix = current_scroll_compensation_matrix;
431 431
432 // If the current layer has a non-zero scroll_delta, then we should compute 432 // If the current layer has a non-zero scroll_delta, then we should compute
433 // its local scrollCompensation and accumulate it to the 433 // its local scroll compensation and accumulate it to the
434 // next_scroll_compensation_matrix. 434 // next_scroll_compensation_matrix.
435 if (!layer->scroll_delta().IsZero()) { 435 if (!layer->scroll_delta().IsZero()) {
436 gfx::Transform scroll_compensation_for_this_layer = 436 gfx::Transform scroll_compensation_for_this_layer =
437 ComputeScrollCompensationForThisLayer(layer, parent_matrix); 437 ComputeScrollCompensationForThisLayer(layer, parent_matrix);
438 next_scroll_compensation_matrix.PreconcatTransform( 438 next_scroll_compensation_matrix.PreconcatTransform(
439 scroll_compensation_for_this_layer); 439 scroll_compensation_for_this_layer);
440 } 440 }
441 441
442 // If the layer created its own render_surface, we have to adjust 442 // If the layer created its own render_surface, we have to adjust
443 // next_scroll_compensation_matrix. The adjustment allows us to continue 443 // next_scroll_compensation_matrix. The adjustment allows us to continue
444 // using the scrollCompensation on the next surface. 444 // using the scroll compensation on the next surface.
445 // Step 1 (right-most in the math): transform from the new surface to the 445 // Step 1 (right-most in the math): transform from the new surface to the
446 // original ancestor surface 446 // original ancestor surface
447 // Step 2: apply the scroll compensation 447 // Step 2: apply the scroll compensation
448 // Step 3: transform back to the new surface. 448 // Step 3: transform back to the new surface.
449 if (layer->render_surface() && 449 if (layer->render_surface() &&
450 !next_scroll_compensation_matrix.IsIdentity()) { 450 !next_scroll_compensation_matrix.IsIdentity()) {
451 gfx::Transform inverse_surface_draw_transform( 451 gfx::Transform inverse_surface_draw_transform(
452 gfx::Transform::kSkipInitialization); 452 gfx::Transform::kSkipInitialization);
453 if (!layer->render_surface()->draw_transform().GetInverse( 453 if (!layer->render_surface()->draw_transform().GetInverse(
454 &inverse_surface_draw_transform)) { 454 &inverse_surface_draw_transform)) {
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
614 } 614 }
615 615
616 static void RoundTranslationComponents(gfx::Transform* transform) { 616 static void RoundTranslationComponents(gfx::Transform* transform) {
617 transform->matrix(). 617 transform->matrix().
618 setDouble(0, 3, MathUtil::Round(transform->matrix().getDouble(0, 3))); 618 setDouble(0, 3, MathUtil::Round(transform->matrix().getDouble(0, 3)));
619 transform->matrix(). 619 transform->matrix().
620 setDouble(1, 3, MathUtil::Round(transform->matrix().getDouble(1, 3))); 620 setDouble(1, 3, MathUtil::Round(transform->matrix().getDouble(1, 3)));
621 } 621 }
622 622
623 // Recursively walks the layer tree starting at the given node and computes all 623 // Recursively walks the layer tree starting at the given node and computes all
624 // the necessary transformations, clipRects, render surfaces, etc. 624 // the necessary transformations, clip rects, render surfaces, etc.
625 template <typename LayerType, typename LayerList, typename RenderSurfaceType> 625 template <typename LayerType, typename LayerList, typename RenderSurfaceType>
626 static void CalculateDrawPropertiesInternal( 626 static void CalculateDrawPropertiesInternal(
627 LayerType* layer, 627 LayerType* layer,
628 const gfx::Transform& parent_matrix, 628 const gfx::Transform& parent_matrix,
629 const gfx::Transform& full_hierarchy_matrix, 629 const gfx::Transform& full_hierarchy_matrix,
630 const gfx::Transform& current_scroll_compensation_matrix, 630 const gfx::Transform& current_scroll_compensation_matrix,
631 gfx::Rect clip_rect_from_ancestor, 631 gfx::Rect clip_rect_from_ancestor,
632 gfx::Rect clip_rect_from_ancestor_in_descendant_space, 632 gfx::Rect clip_rect_from_ancestor_in_descendant_space,
633 bool ancestor_clips_subtree, 633 bool ancestor_clips_subtree,
634 RenderSurfaceType* nearest_ancestor_that_moves_pixels, 634 RenderSurfaceType* nearest_ancestor_that_moves_pixels,
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
674 // anchor point 674 // anchor point
675 // 675 //
676 // Tr[origin2center] is the translation from the layer's origin to its 676 // Tr[origin2center] is the translation from the layer's origin to its
677 // center 677 // center
678 // 678 //
679 // M[layer] is the layer's matrix (applied at the anchor point) 679 // M[layer] is the layer's matrix (applied at the anchor point)
680 // 680 //
681 // M[sublayer] is the layer's sublayer transform (also applied at the 681 // M[sublayer] is the layer's sublayer transform (also applied at the
682 // layer's anchor point) 682 // layer's anchor point)
683 // 683 //
684 // S[layer2content] is the ratio of a layer's ContentBounds() to its 684 // S[layer2content] is the ratio of a layer's content_bounds() to its
685 // Bounds(). 685 // Bounds().
686 // 686 //
687 // Some composite transforms can help in understanding the sequence of 687 // Some composite transforms can help in understanding the sequence of
688 // transforms: 688 // transforms:
689 // compositeLayerTransform = Tr[origin2anchor] * M[layer] * 689 // composite_layer_transform = Tr[origin2anchor] * M[layer] *
690 // Tr[origin2anchor].inverse() 690 // Tr[origin2anchor].inverse()
691 // 691 //
692 // compositeSublayerTransform = Tr[origin2anchor] * M[sublayer] * 692 // composite_sublayer_transform = Tr[origin2anchor] * M[sublayer] *
693 // Tr[origin2anchor].inverse() 693 // Tr[origin2anchor].inverse()
694 // 694 //
695 // 4. When a layer (or render surface) is drawn, it is drawn into a "target 695 // 4. When a layer (or render surface) is drawn, it is drawn into a "target
696 // render surface". Therefore the draw transform does not necessarily 696 // render surface". Therefore the draw transform does not necessarily
697 // transform from screen space to local layer space. Instead, the draw 697 // transform from screen space to local layer space. Instead, the draw
698 // transform is the transform between the "target render surface space" and 698 // transform is the transform between the "target render surface space" and
699 // local layer space. Note that render surfaces, except for the root, also 699 // local layer space. Note that render surfaces, except for the root, also
700 // draw themselves into a different target render surface, and so their draw 700 // draw themselves into a different target render surface, and so their draw
701 // transform and origin transforms are also described with respect to the 701 // transform and origin transforms are also described with respect to the
702 // target. 702 // target.
703 // 703 //
704 // Using these definitions, then: 704 // Using these definitions, then:
705 // 705 //
706 // The draw transform for the layer is: 706 // The draw transform for the layer is:
707 // M[draw] = M[parent] * Tr[origin] * compositeLayerTransform * 707 // M[draw] = M[parent] * Tr[origin] * composite_layer_transform *
708 // S[layer2content] = M[parent] * Tr[layer->Position() + anchor] * 708 // S[layer2content] = M[parent] * Tr[layer->position() + anchor] *
709 // M[layer] * Tr[anchor2origin] * S[layer2content] 709 // M[layer] * Tr[anchor2origin] * S[layer2content]
710 // 710 //
711 // Interpreting the math left-to-right, this transforms from the 711 // Interpreting the math left-to-right, this transforms from the
712 // layer's render surface to the origin of the layer in content space. 712 // layer's render surface to the origin of the layer in content space.
713 // 713 //
714 // The screen space transform is: 714 // The screen space transform is:
715 // M[screenspace] = M[root] * Tr[origin] * compositeLayerTransform * 715 // M[screenspace] = M[root] * Tr[origin] * composite_layer_transform *
716 // S[layer2content] 716 // S[layer2content]
717 // = M[root] * Tr[layer->Position() + anchor] * M[layer] 717 // = M[root] * Tr[layer->position() + anchor] * M[layer]
718 // * Tr[anchor2origin] * S[layer2content] 718 // * Tr[anchor2origin] * S[layer2content]
719 // 719 //
720 // Interpreting the math left-to-right, this transforms from the root 720 // Interpreting the math left-to-right, this transforms from the root
721 // render surface's content space to the origin of the layer in content 721 // render surface's content space to the origin of the layer in content
722 // space. 722 // space.
723 // 723 //
724 // The transform hierarchy that is passed on to children (i.e. the child's 724 // The transform hierarchy that is passed on to children (i.e. the child's
725 // parent_matrix) is: 725 // parent_matrix) is:
726 // M[parent]_for_child = M[parent] * Tr[origin] * 726 // M[parent]_for_child = M[parent] * Tr[origin] *
727 // compositeLayerTransform * compositeSublayerTransform 727 // composite_layer_transform * composite_sublayer_transform
728 // = M[parent] * Tr[layer->Position() + anchor] * 728 // = M[parent] * Tr[layer->position() + anchor] *
729 // M[layer] * Tr[anchor2origin] * 729 // M[layer] * Tr[anchor2origin] *
730 // compositeSublayerTransform 730 // composite_sublayer_transform
731 // 731 //
732 // and a similar matrix for the full hierarchy with respect to the 732 // and a similar matrix for the full hierarchy with respect to the
733 // root. 733 // root.
734 // 734 //
735 // Finally, note that the final matrix used by the shader for the layer is P * 735 // Finally, note that the final matrix used by the shader for the layer is P *
736 // M[draw] * S . This final product is computed in drawTexturedQuad(), where: 736 // M[draw] * S . This final product is computed in drawTexturedQuad(), where:
737 // P is the projection matrix 737 // P is the projection matrix
738 // S is the scale adjustment (to scale up a canonical quad to the 738 // S is the scale adjustment (to scale up a canonical quad to the
739 // layer's size) 739 // layer's size)
740 // 740 //
741 // When a render surface has a replica layer, that layer's transform is used 741 // When a render surface has a replica layer, that layer's transform is used
742 // to draw a second copy of the surface. gfx::Transforms named here are 742 // to draw a second copy of the surface. gfx::Transforms named here are
743 // relative to the surface, unless they specify they are relative to the 743 // relative to the surface, unless they specify they are relative to the
744 // replica layer. 744 // replica layer.
745 // 745 //
746 // We will denote a scale by device scale S[deviceScale] 746 // We will denote a scale by device scale S[deviceScale]
747 // 747 //
748 // The render surface draw transform to its target surface origin is: 748 // The render surface draw transform to its target surface origin is:
749 // M[surfaceDraw] = M[owningLayer->Draw] 749 // M[surfaceDraw] = M[owningLayer->Draw]
750 // 750 //
751 // The render surface origin transform to its the root (screen space) origin 751 // The render surface origin transform to its the root (screen space) origin
752 // is: 752 // is:
753 // M[surface2root] = M[owningLayer->screenspace] * 753 // M[surface2root] = M[owningLayer->screenspace] *
754 // S[deviceScale].inverse() 754 // S[deviceScale].inverse()
755 // 755 //
756 // The replica draw transform to its target surface origin is: 756 // The replica draw transform to its target surface origin is:
757 // M[replicaDraw] = S[deviceScale] * M[surfaceDraw] * 757 // M[replicaDraw] = S[deviceScale] * M[surfaceDraw] *
758 // Tr[replica->Position() + replica->anchor()] * Tr[replica] * 758 // Tr[replica->position() + replica->anchor()] * Tr[replica] *
759 // Tr[origin2anchor].inverse() * S[contents_scale].inverse() 759 // Tr[origin2anchor].inverse() * S[contents_scale].inverse()
760 // 760 //
761 // The replica draw transform to the root (screen space) origin is: 761 // The replica draw transform to the root (screen space) origin is:
762 // M[replica2root] = M[surface2root] * Tr[replica->Position()] * 762 // M[replica2root] = M[surface2root] * Tr[replica->position()] *
763 // Tr[replica] * Tr[origin2anchor].inverse() 763 // Tr[replica] * Tr[origin2anchor].inverse()
764 // 764 //
765 765
766 // If we early-exit anywhere in this function, the drawableContentRect of this 766 // If we early-exit anywhere in this function, the drawable_content_rect of th is
767 // subtree should be considered empty. 767 // subtree should be considered empty.
768 *drawable_content_rect_of_subtree = gfx::Rect(); 768 *drawable_content_rect_of_subtree = gfx::Rect();
769 769
770 // The root layer cannot skip calcDrawProperties. 770 // The root layer cannot skip CalcDrawProperties.
771 if (!IsRootLayer(layer) && SubtreeShouldBeSkipped(layer)) 771 if (!IsRootLayer(layer) && SubtreeShouldBeSkipped(layer))
772 return; 772 return;
773 773
774 // As this function proceeds, these are the properties for the current 774 // As this function proceeds, these are the properties for the current
775 // layer that actually get computed. To avoid unnecessary copies 775 // layer that actually get computed. To avoid unnecessary copies
776 // (particularly for matrices), we do computations directly on these values 776 // (particularly for matrices), we do computations directly on these values
777 // when possible. 777 // when possible.
778 DrawProperties<LayerType, RenderSurfaceType>& layer_draw_properties = 778 DrawProperties<LayerType, RenderSurfaceType>& layer_draw_properties =
779 layer->draw_properties(); 779 layer->draw_properties();
780 780
781 gfx::Rect clip_rect_for_subtree; 781 gfx::Rect clip_rect_for_subtree;
782 bool subtree_should_be_clipped = false; 782 bool subtree_should_be_clipped = false;
783 783
784 // This value is cached on the stack so that we don't have to inverse-project 784 // This value is cached on the stack so that we don't have to inverse-project
785 // the surface's clipRect redundantly for every layer. This value is the 785 // the surface's clip rect redundantly for every layer. This value is the
786 // same as the surface's clipRect, except that instead of being described 786 // same as the surface's clip rect, except that instead of being described
787 // in the target surface space (i.e. the ancestor surface space), it is 787 // in the target surface space (i.e. the ancestor surface space), it is
788 // described in the current surface space. 788 // described in the current surface space.
789 gfx::Rect clip_rect_for_subtree_in_descendant_space; 789 gfx::Rect clip_rect_for_subtree_in_descendant_space;
790 790
791 float accumulated_draw_opacity = layer->opacity(); 791 float accumulated_draw_opacity = layer->opacity();
792 bool animating_opacity_to_target = layer->OpacityIsAnimating(); 792 bool animating_opacity_to_target = layer->OpacityIsAnimating();
793 bool animating_opacity_to_screen = animating_opacity_to_target; 793 bool animating_opacity_to_screen = animating_opacity_to_target;
794 if (layer->parent()) { 794 if (layer->parent()) {
795 accumulated_draw_opacity *= layer->parent()->draw_opacity(); 795 accumulated_draw_opacity *= layer->parent()->draw_opacity();
796 animating_opacity_to_target |= layer->parent()->draw_opacity_is_animating(); 796 animating_opacity_to_target |= layer->parent()->draw_opacity_is_animating();
(...skipping 24 matching lines...) Expand all
821 // LT = Tr[origin] * Tr[origin2anchor] * M[layer] 821 // LT = Tr[origin] * Tr[origin2anchor] * M[layer]
822 combined_transform.PreconcatTransform(layer->transform()); 822 combined_transform.PreconcatTransform(layer->transform());
823 // LT = Tr[origin] * Tr[origin2anchor] * M[layer] * Tr[anchor2origin] 823 // LT = Tr[origin] * Tr[origin2anchor] * M[layer] * Tr[anchor2origin]
824 combined_transform.Translate3d(-anchor_point.x() * bounds.width(), 824 combined_transform.Translate3d(-anchor_point.x() * bounds.width(),
825 -anchor_point.y() * bounds.height(), 825 -anchor_point.y() * bounds.height(),
826 -layer->anchor_point_z()); 826 -layer->anchor_point_z());
827 } else { 827 } else {
828 combined_transform.Translate(position.x(), position.y()); 828 combined_transform.Translate(position.x(), position.y());
829 } 829 }
830 830
831 // The layer's contentsSize is determined from the combined_transform, which 831 // The layer's contents_scale is determined from the combined_transform, which
832 // then informs the layer's draw_transform. 832 // then informs the layer's draw_transform.
833 UpdateLayerContentsScale(layer, 833 UpdateLayerContentsScale(layer,
834 combined_transform, 834 combined_transform,
835 device_scale_factor, 835 device_scale_factor,
836 page_scale_factor, 836 page_scale_factor,
837 animating_transform_to_screen); 837 animating_transform_to_screen);
838 838
839 // If there is a transformation from the impl thread then it should be at 839 // If there is a transformation from the impl thread then it should be at
840 // the start of the combined_transform, but we don't want it to affect the 840 // the start of the combined_transform, but we don't want it to affect the
841 // computation of contents_scale above. 841 // computation of contents_scale above.
842 // Note carefully: this is Concat, not Preconcat (implTransform * 842 // Note carefully: this is Concat, not Preconcat (impl_transform *
843 // combined_transform). 843 // combined_transform).
844 combined_transform.ConcatTransform(layer->impl_transform()); 844 combined_transform.ConcatTransform(layer->impl_transform());
845 845
846 if (!animating_transform_to_target && layer->scrollable() && 846 if (!animating_transform_to_target && layer->scrollable() &&
847 combined_transform.IsScaleOrTranslation()) { 847 combined_transform.IsScaleOrTranslation()) {
848 // Align the scrollable layer's position to screen space pixels to avoid 848 // Align the scrollable layer's position to screen space pixels to avoid
849 // blurriness. To avoid side-effects, do this only if the transform is 849 // blurriness. To avoid side-effects, do this only if the transform is
850 // simple. 850 // simple.
851 RoundTranslationComponents(&combined_transform); 851 RoundTranslationComponents(&combined_transform);
852 } 852 }
853 853
854 if (layer->fixed_to_container_layer()) { 854 if (layer->fixed_to_container_layer()) {
855 // Special case: this layer is a composited fixed-position layer; we need to 855 // Special case: this layer is a composited fixed-position layer; we need to
856 // explicitly compensate for all ancestors' nonzero scroll_deltas to keep 856 // explicitly compensate for all ancestors' nonzero scroll_deltas to keep
857 // this layer fixed correctly. 857 // this layer fixed correctly.
858 // Note carefully: this is Concat, not Preconcat 858 // Note carefully: this is Concat, not Preconcat
859 // (current_scroll_compensation * combined_transform). 859 // (current_scroll_compensation * combined_transform).
860 combined_transform.ConcatTransform(current_scroll_compensation_matrix); 860 combined_transform.ConcatTransform(current_scroll_compensation_matrix);
861 } 861 }
862 862
863 // The draw_transform that gets computed below is effectively the layer's 863 // The draw_transform that gets computed below is effectively the layer's
864 // draw_transform, unless the layer itself creates a render_surface. In that 864 // draw_transform, unless the layer itself creates a render_surface. In that
865 // case, the render_surface re-parents the transforms. 865 // case, the render_surface re-parents the transforms.
866 layer_draw_properties.target_space_transform = combined_transform; 866 layer_draw_properties.target_space_transform = combined_transform;
867 // M[draw] = M[parent] * LT * S[layer2content] 867 // M[draw] = M[parent] * LT * S[layer2content]
868 layer_draw_properties.target_space_transform.Scale 868 layer_draw_properties.target_space_transform.Scale
869 (1.f / layer->contents_scale_x(), 1.f / layer->contents_scale_y()); 869 (1.f / layer->contents_scale_x(), 1.f / layer->contents_scale_y());
870 870
871 // layerScreenSpaceTransform represents the transform between root layer's 871 // The layer's screen_space_transform represents the transform between root
872 // "screen space" and local content space. 872 // layer's "screen space" and local content space.
873 layer_draw_properties.screen_space_transform = full_hierarchy_matrix; 873 layer_draw_properties.screen_space_transform = full_hierarchy_matrix;
874 if (!layer->preserves_3d()) 874 if (!layer->preserves_3d())
875 layer_draw_properties.screen_space_transform.FlattenTo2d(); 875 layer_draw_properties.screen_space_transform.FlattenTo2d();
876 layer_draw_properties.screen_space_transform.PreconcatTransform 876 layer_draw_properties.screen_space_transform.PreconcatTransform
877 (layer_draw_properties.target_space_transform); 877 (layer_draw_properties.target_space_transform);
878 878
879 // Adjusting text AA method during animation may cause repaints, which in-turn 879 // Adjusting text AA method during animation may cause repaints, which in-turn
880 // causes jank. 880 // causes jank.
881 bool adjust_text_aa = 881 bool adjust_text_aa =
882 !animating_opacity_to_screen && !animating_transform_to_screen; 882 !animating_opacity_to_screen && !animating_transform_to_screen;
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
956 animating_transform_to_target; 956 animating_transform_to_target;
957 layer_draw_properties.screen_space_transform_is_animating = 957 layer_draw_properties.screen_space_transform_is_animating =
958 animating_transform_to_screen; 958 animating_transform_to_screen;
959 959
960 // Update the aggregate hierarchy matrix to include the transform of the 960 // Update the aggregate hierarchy matrix to include the transform of the
961 // newly created RenderSurfaceImpl. 961 // newly created RenderSurfaceImpl.
962 next_hierarchy_matrix.PreconcatTransform(render_surface->draw_transform()); 962 next_hierarchy_matrix.PreconcatTransform(render_surface->draw_transform());
963 963
964 // The new render_surface here will correctly clip the entire subtree. So, 964 // The new render_surface here will correctly clip the entire subtree. So,
965 // we do not need to continue propagating the clipping state further down 965 // we do not need to continue propagating the clipping state further down
966 // the tree. This way, we can avoid transforming clipRects from ancestor 966 // the tree. This way, we can avoid transforming clip rects from ancestor
967 // target surface space to current target surface space that could cause 967 // target surface space to current target surface space that could cause
968 // more w < 0 headaches. 968 // more w < 0 headaches.
969 subtree_should_be_clipped = false; 969 subtree_should_be_clipped = false;
970 970
971 if (layer->mask_layer()) { 971 if (layer->mask_layer()) {
972 DrawProperties<LayerType, RenderSurfaceType>& mask_layer_draw_properties = 972 DrawProperties<LayerType, RenderSurfaceType>& mask_layer_draw_properties =
973 layer->mask_layer()->draw_properties(); 973 layer->mask_layer()->draw_properties();
974 mask_layer_draw_properties.render_target = layer; 974 mask_layer_draw_properties.render_target = layer;
975 mask_layer_draw_properties.visible_content_rect = 975 mask_layer_draw_properties.visible_content_rect =
976 gfx::Rect(gfx::Point(), layer->content_bounds()); 976 gfx::Rect(gfx::Point(), layer->content_bounds());
977 } 977 }
978 978
979 if (layer->replica_layer() && layer->replica_layer()->mask_layer()) { 979 if (layer->replica_layer() && layer->replica_layer()->mask_layer()) {
980 DrawProperties<LayerType, RenderSurfaceType>& 980 DrawProperties<LayerType, RenderSurfaceType>&
981 replica_mask_draw_properties = 981 replica_mask_draw_properties =
982 layer->replica_layer()->mask_layer()->draw_properties(); 982 layer->replica_layer()->mask_layer()->draw_properties();
983 replica_mask_draw_properties.render_target = layer; 983 replica_mask_draw_properties.render_target = layer;
984 replica_mask_draw_properties.visible_content_rect = 984 replica_mask_draw_properties.visible_content_rect =
985 gfx::Rect(gfx::Point(), layer->content_bounds()); 985 gfx::Rect(gfx::Point(), layer->content_bounds());
986 } 986 }
987 987
988 // TODO(senorblanco): make this smarter for the SkImageFilter case (check 988 // TODO(senorblanco): make this smarter for the SkImageFilter case (check
989 // for pixel-moving filters) 989 // for pixel-moving filters)
990 if (layer->filters().hasFilterThatMovesPixels() || layer->filter()) 990 if (layer->filters().hasFilterThatMovesPixels() || layer->filter())
991 nearest_ancestor_that_moves_pixels = render_surface; 991 nearest_ancestor_that_moves_pixels = render_surface;
992 992
993 // The render surface clipRect is expressed in the space where this surface 993 // The render surface clip rect is expressed in the space where this surface
994 // draws, i.e. the same space as clip_rect_from_ancestor. 994 // draws, i.e. the same space as clip_rect_from_ancestor.
995 render_surface->SetIsClipped(ancestor_clips_subtree); 995 render_surface->SetIsClipped(ancestor_clips_subtree);
996 if (ancestor_clips_subtree) { 996 if (ancestor_clips_subtree) {
997 render_surface->SetClipRect(clip_rect_from_ancestor); 997 render_surface->SetClipRect(clip_rect_from_ancestor);
998 998
999 gfx::Transform inverse_surface_draw_transform( 999 gfx::Transform inverse_surface_draw_transform(
1000 gfx::Transform::kSkipInitialization); 1000 gfx::Transform::kSkipInitialization);
1001 if (!render_surface->draw_transform().GetInverse( 1001 if (!render_surface->draw_transform().GetInverse(
1002 &inverse_surface_draw_transform)) { 1002 &inverse_surface_draw_transform)) {
1003 // TODO(shawnsingh): Either we need to handle uninvertible transforms 1003 // TODO(shawnsingh): Either we need to handle uninvertible transforms
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1037 sublayer_matrix = combined_transform; 1037 sublayer_matrix = combined_transform;
1038 1038
1039 layer->ClearRenderSurface(); 1039 layer->ClearRenderSurface();
1040 1040
1041 // Layers without render_surfaces directly inherit the ancestor's clip 1041 // Layers without render_surfaces directly inherit the ancestor's clip
1042 // status. 1042 // status.
1043 subtree_should_be_clipped = ancestor_clips_subtree; 1043 subtree_should_be_clipped = ancestor_clips_subtree;
1044 if (ancestor_clips_subtree) 1044 if (ancestor_clips_subtree)
1045 clip_rect_for_subtree = clip_rect_from_ancestor; 1045 clip_rect_for_subtree = clip_rect_from_ancestor;
1046 1046
1047 // The surface's cached clipRect value propagates regardless of what 1047 // The surface's cached clip rect value propagates regardless of what
1048 // clipping goes on between layers here. 1048 // clipping goes on between layers here.
1049 clip_rect_for_subtree_in_descendant_space = 1049 clip_rect_for_subtree_in_descendant_space =
1050 clip_rect_from_ancestor_in_descendant_space; 1050 clip_rect_from_ancestor_in_descendant_space;
1051 1051
1052 // Layers that are not their own render_target will render into the target 1052 // Layers that are not their own render_target will render into the target
1053 // of their nearest ancestor. 1053 // of their nearest ancestor.
1054 layer_draw_properties.render_target = layer->parent()->render_target(); 1054 layer_draw_properties.render_target = layer->parent()->render_target();
1055 } 1055 }
1056 1056
1057 if (adjust_text_aa) 1057 if (adjust_text_aa)
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
1128 descendants.push_back(child); 1128 descendants.push_back(child);
1129 } 1129 }
1130 } 1130 }
1131 1131
1132 if (layer->render_surface() && !IsRootLayer(layer) && 1132 if (layer->render_surface() && !IsRootLayer(layer) &&
1133 layer->render_surface()->layer_list().empty()) { 1133 layer->render_surface()->layer_list().empty()) {
1134 RemoveSurfaceForEarlyExit(layer, render_surface_layer_list); 1134 RemoveSurfaceForEarlyExit(layer, render_surface_layer_list);
1135 return; 1135 return;
1136 } 1136 }
1137 1137
1138 // Compute the total drawableContentRect for this subtree (the rect is in 1138 // Compute the total drawable_content_rect for this subtree (the rect is in
1139 // targetSurface space). 1139 // target surface space).
1140 gfx::Rect local_drawable_content_rect_of_subtree = 1140 gfx::Rect local_drawable_content_rect_of_subtree =
1141 accumulated_drawable_content_rect_of_children; 1141 accumulated_drawable_content_rect_of_children;
1142 if (layer->DrawsContent()) 1142 if (layer->DrawsContent())
1143 local_drawable_content_rect_of_subtree.Union(rect_in_target_space); 1143 local_drawable_content_rect_of_subtree.Union(rect_in_target_space);
1144 if (subtree_should_be_clipped) 1144 if (subtree_should_be_clipped)
1145 local_drawable_content_rect_of_subtree.Intersect(clip_rect_for_subtree); 1145 local_drawable_content_rect_of_subtree.Intersect(clip_rect_for_subtree);
1146 1146
1147 // Compute the layer's drawable content rect (the rect is in targetSurface 1147 // Compute the layer's drawable content rect (the rect is in target surface
1148 // space). 1148 // space).
1149 layer_draw_properties.drawable_content_rect = rect_in_target_space; 1149 layer_draw_properties.drawable_content_rect = rect_in_target_space;
1150 if (subtree_should_be_clipped) { 1150 if (subtree_should_be_clipped) {
1151 layer_draw_properties.drawable_content_rect. 1151 layer_draw_properties.drawable_content_rect.
1152 Intersect(clip_rect_for_subtree); 1152 Intersect(clip_rect_for_subtree);
1153 } 1153 }
1154 1154
1155 // Tell the layer the rect that is clipped by. In theory we could use a 1155 // Tell the layer the rect that is clipped by. In theory we could use a
1156 // tighter clipRect here (drawableContentRect), but that actually does not 1156 // tighter clip rect here (drawable_content_rect), but that actually does not
1157 // reduce how much would be drawn, and instead it would create unnecessary 1157 // reduce how much would be drawn, and instead it would create unnecessary
1158 // changes to scissor state affecting GPU performance. 1158 // changes to scissor state affecting GPU performance.
1159 layer_draw_properties.is_clipped = subtree_should_be_clipped; 1159 layer_draw_properties.is_clipped = subtree_should_be_clipped;
1160 if (subtree_should_be_clipped) { 1160 if (subtree_should_be_clipped) {
1161 layer_draw_properties.clip_rect = clip_rect_for_subtree; 1161 layer_draw_properties.clip_rect = clip_rect_for_subtree;
1162 } else { 1162 } else {
1163 // Initialize the clipRect to a safe value that will not clip the 1163 // Initialize the clip rect to a safe value that will not clip the
1164 // layer, just in case clipping is still accidentally used. 1164 // layer, just in case clipping is still accidentally used.
1165 layer_draw_properties.clip_rect = rect_in_target_space; 1165 layer_draw_properties.clip_rect = rect_in_target_space;
1166 } 1166 }
1167 1167
1168 // Compute the layer's visible content rect (the rect is in content space) 1168 // Compute the layer's visible content rect (the rect is in content space)
1169 layer_draw_properties.visible_content_rect = CalculateVisibleContentRect( 1169 layer_draw_properties.visible_content_rect = CalculateVisibleContentRect(
1170 layer, clip_rect_for_subtree_in_descendant_space, rect_in_target_space); 1170 layer, clip_rect_for_subtree_in_descendant_space, rect_in_target_space);
1171 1171
1172 // Compute the remaining properties for the render surface, if the layer has 1172 // Compute the remaining properties for the render surface, if the layer has
1173 // one. 1173 // one.
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
1292 float page_scale_factor, 1292 float page_scale_factor,
1293 int max_texture_size, 1293 int max_texture_size,
1294 bool can_use_lcd_text, 1294 bool can_use_lcd_text,
1295 std::vector<scoped_refptr<Layer> >* render_surface_layer_list) { 1295 std::vector<scoped_refptr<Layer> >* render_surface_layer_list) {
1296 gfx::Rect total_drawable_content_rect; 1296 gfx::Rect total_drawable_content_rect;
1297 gfx::Transform identity_matrix; 1297 gfx::Transform identity_matrix;
1298 gfx::Transform device_scale_transform; 1298 gfx::Transform device_scale_transform;
1299 device_scale_transform.Scale(device_scale_factor, device_scale_factor); 1299 device_scale_transform.Scale(device_scale_factor, device_scale_factor);
1300 std::vector<scoped_refptr<Layer> > dummy_layer_list; 1300 std::vector<scoped_refptr<Layer> > dummy_layer_list;
1301 1301
1302 // The root layer's render_surface should receive the deviceViewport as the 1302 // The root layer's render_surface should receive the device viewport as the
1303 // initial clipRect. 1303 // initial clip rect.
1304 bool subtree_should_be_clipped = true; 1304 bool subtree_should_be_clipped = true;
1305 gfx::Rect device_viewport_rect(gfx::Point(), device_viewport_size); 1305 gfx::Rect device_viewport_rect(gfx::Point(), device_viewport_size);
1306 bool update_tile_priorities = false; 1306 bool update_tile_priorities = false;
1307 1307
1308 // This function should have received a root layer. 1308 // This function should have received a root layer.
1309 DCHECK(IsRootLayer(root_layer)); 1309 DCHECK(IsRootLayer(root_layer));
1310 1310
1311 PreCalculateMetaInformation<Layer>(root_layer); 1311 PreCalculateMetaInformation<Layer>(root_layer);
1312 CalculateDrawPropertiesInternal<Layer, 1312 CalculateDrawPropertiesInternal<Layer,
1313 std::vector<scoped_refptr<Layer> >, 1313 std::vector<scoped_refptr<Layer> >,
(...skipping 11 matching lines...) Expand all
1325 max_texture_size, 1325 max_texture_size,
1326 device_scale_factor, 1326 device_scale_factor,
1327 page_scale_factor, 1327 page_scale_factor,
1328 can_use_lcd_text, 1328 can_use_lcd_text,
1329 &total_drawable_content_rect, 1329 &total_drawable_content_rect,
1330 update_tile_priorities); 1330 update_tile_priorities);
1331 1331
1332 // The dummy layer list should not have been used. 1332 // The dummy layer list should not have been used.
1333 DCHECK_EQ(dummy_layer_list.size(), 0); 1333 DCHECK_EQ(dummy_layer_list.size(), 0);
1334 // A root layer render_surface should always exist after 1334 // A root layer render_surface should always exist after
1335 // calculateDrawProperties. 1335 // CalculateDrawProperties.
1336 DCHECK(root_layer->render_surface()); 1336 DCHECK(root_layer->render_surface());
1337 } 1337 }
1338 1338
1339 void LayerTreeHostCommon::CalculateDrawProperties( 1339 void LayerTreeHostCommon::CalculateDrawProperties(
1340 LayerImpl* root_layer, 1340 LayerImpl* root_layer,
1341 gfx::Size device_viewport_size, 1341 gfx::Size device_viewport_size,
1342 float device_scale_factor, 1342 float device_scale_factor,
1343 float page_scale_factor, 1343 float page_scale_factor,
1344 int max_texture_size, 1344 int max_texture_size,
1345 bool can_use_lcd_text, 1345 bool can_use_lcd_text,
1346 std::vector<LayerImpl*>* render_surface_layer_list, 1346 std::vector<LayerImpl*>* render_surface_layer_list,
1347 bool update_tile_priorities) { 1347 bool update_tile_priorities) {
1348 gfx::Rect total_drawable_content_rect; 1348 gfx::Rect total_drawable_content_rect;
1349 gfx::Transform identity_matrix; 1349 gfx::Transform identity_matrix;
1350 gfx::Transform device_scale_transform; 1350 gfx::Transform device_scale_transform;
1351 device_scale_transform.Scale(device_scale_factor, device_scale_factor); 1351 device_scale_transform.Scale(device_scale_factor, device_scale_factor);
1352 std::vector<LayerImpl*> dummy_layer_list; 1352 std::vector<LayerImpl*> dummy_layer_list;
1353 LayerSorter layer_sorter; 1353 LayerSorter layer_sorter;
1354 1354
1355 // The root layer's render_surface should receive the deviceViewport as the 1355 // The root layer's render_surface should receive the device viewport as the
1356 // initial clipRect. 1356 // initial clip rect.
1357 bool subtree_should_be_clipped = true; 1357 bool subtree_should_be_clipped = true;
1358 gfx::Rect device_viewport_rect(gfx::Point(), device_viewport_size); 1358 gfx::Rect device_viewport_rect(gfx::Point(), device_viewport_size);
1359 1359
1360 // This function should have received a root layer. 1360 // This function should have received a root layer.
1361 DCHECK(IsRootLayer(root_layer)); 1361 DCHECK(IsRootLayer(root_layer));
1362 1362
1363 PreCalculateMetaInformation<LayerImpl>(root_layer); 1363 PreCalculateMetaInformation<LayerImpl>(root_layer);
1364 CalculateDrawPropertiesInternal<LayerImpl, 1364 CalculateDrawPropertiesInternal<LayerImpl,
1365 std::vector<LayerImpl*>, 1365 std::vector<LayerImpl*>,
1366 RenderSurfaceImpl>( 1366 RenderSurfaceImpl>(
(...skipping 11 matching lines...) Expand all
1378 max_texture_size, 1378 max_texture_size,
1379 device_scale_factor, 1379 device_scale_factor,
1380 page_scale_factor, 1380 page_scale_factor,
1381 can_use_lcd_text, 1381 can_use_lcd_text,
1382 &total_drawable_content_rect, 1382 &total_drawable_content_rect,
1383 update_tile_priorities); 1383 update_tile_priorities);
1384 1384
1385 // The dummy layer list should not have been used. 1385 // The dummy layer list should not have been used.
1386 DCHECK_EQ(dummy_layer_list.size(), 0); 1386 DCHECK_EQ(dummy_layer_list.size(), 0);
1387 // A root layer render_surface should always exist after 1387 // A root layer render_surface should always exist after
1388 // calculateDrawProperties. 1388 // CalculateDrawProperties.
1389 DCHECK(root_layer->render_surface()); 1389 DCHECK(root_layer->render_surface());
1390 } 1390 }
1391 1391
1392 static bool PointHitsRect( 1392 static bool PointHitsRect(
1393 gfx::PointF screen_space_point, 1393 gfx::PointF screen_space_point,
1394 const gfx::Transform& local_space_to_screen_space_transform, 1394 const gfx::Transform& local_space_to_screen_space_transform,
1395 gfx::RectF local_space_rect) { 1395 gfx::RectF local_space_rect) {
1396 // If the transform is not invertible, then assume that this point doesn't hit 1396 // If the transform is not invertible, then assume that this point doesn't hit
1397 // this rect. 1397 // this rect.
1398 gfx::Transform inverse_local_space_to_screen_space( 1398 gfx::Transform inverse_local_space_to_screen_space(
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
1574 // At this point, we think the point does hit the touch event handler region 1574 // At this point, we think the point does hit the touch event handler region
1575 // on the layer, but we need to walk up the parents to ensure that the layer 1575 // on the layer, but we need to walk up the parents to ensure that the layer
1576 // was not clipped in such a way that the hit point actually should not hit 1576 // was not clipped in such a way that the hit point actually should not hit
1577 // the layer. 1577 // the layer.
1578 if (PointIsClippedBySurfaceOrClipRect(screen_space_point, layer_impl)) 1578 if (PointIsClippedBySurfaceOrClipRect(screen_space_point, layer_impl))
1579 return false; 1579 return false;
1580 1580
1581 return true; 1581 return true;
1582 } 1582 }
1583 } // namespace cc 1583 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_common.h ('k') | cc/trees/layer_tree_host_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698