summaryrefslogtreecommitdiffstats
path: root/cc/layers/render_surface_impl.cc
diff options
context:
space:
mode:
authorajuma <ajuma@chromium.org>2015-11-30 11:43:44 -0800
committerCommit bot <commit-bot@chromium.org>2015-11-30 19:45:05 +0000
commitd9432e3c14de1f2a4b04a5fa5c96ab73d9d9d86e (patch)
treed71b9a227b940decd452f4546361e786a59b3750 /cc/layers/render_surface_impl.cc
parent1dd1fc030f7d06669a1de1538edbaa4723c3e4e1 (diff)
downloadchromium_src-d9432e3c14de1f2a4b04a5fa5c96ab73d9d9d86e.zip
chromium_src-d9432e3c14de1f2a4b04a5fa5c96ab73d9d9d86e.tar.gz
chromium_src-d9432e3c14de1f2a4b04a5fa5c96ab73d9d9d86e.tar.bz2
cc: Fix draw transform computation for non-drawn layers
When property trees are enabled, draw properties are only computed for drawn layers. This means that when a non-drawn layer's draw transform is needed, it must be computed on-demand using the transform tree rather than being read from the layer's draw properties. BUG=560275 CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel Review URL: https://codereview.chromium.org/1479883002 Cr-Commit-Position: refs/heads/master@{#362196}
Diffstat (limited to 'cc/layers/render_surface_impl.cc')
-rw-r--r--cc/layers/render_surface_impl.cc9
1 files changed, 6 insertions, 3 deletions
diff --git a/cc/layers/render_surface_impl.cc b/cc/layers/render_surface_impl.cc
index d9eeb84..d93e052 100644
--- a/cc/layers/render_surface_impl.cc
+++ b/cc/layers/render_surface_impl.cc
@@ -18,6 +18,8 @@
#include "cc/quads/render_pass_draw_quad.h"
#include "cc/quads/shared_quad_state.h"
#include "cc/trees/damage_tracker.h"
+#include "cc/trees/draw_property_utils.h"
+#include "cc/trees/layer_tree_impl.h"
#include "cc/trees/occlusion.h"
#include "third_party/skia/include/core/SkImageFilter.h"
#include "ui/gfx/geometry/rect_conversions.h"
@@ -224,12 +226,13 @@ void RenderSurfaceImpl::AppendQuads(RenderPass* render_pass,
ResourceId mask_resource_id = 0;
gfx::Size mask_texture_size;
gfx::Vector2dF mask_uv_scale;
+ gfx::Transform owning_layer_draw_transform = owning_layer_->DrawTransform();
if (mask_layer && mask_layer->DrawsContent() &&
!mask_layer->bounds().IsEmpty()) {
mask_layer->GetContentsResourceId(&mask_resource_id, &mask_texture_size);
gfx::Vector2dF owning_layer_draw_scale =
- MathUtil::ComputeTransform2dScaleComponents(
- owning_layer_->draw_transform(), 1.f);
+ MathUtil::ComputeTransform2dScaleComponents(owning_layer_draw_transform,
+ 1.f);
gfx::SizeF unclipped_mask_target_size = gfx::ScaleSize(
gfx::SizeF(owning_layer_->bounds()), owning_layer_draw_scale.x(),
owning_layer_draw_scale.y());
@@ -240,7 +243,7 @@ void RenderSurfaceImpl::AppendQuads(RenderPass* render_pass,
DCHECK(owning_layer_->draw_properties().target_space_transform.IsScale2d());
gfx::Vector2dF owning_layer_to_target_scale =
- owning_layer_->draw_properties().target_space_transform.Scale2d();
+ owning_layer_draw_transform.Scale2d();
RenderPassDrawQuad* quad =
render_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>();