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

Side by Side Diff: cc/layers/tiled_layer.cc

Issue 567743003: Fix bad scaling in TiledLayer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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
« no previous file with comments | « no previous file | cc/layers/tiled_layer_unittest.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 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/layers/tiled_layer.h" 5 #include "cc/layers/tiled_layer.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 void TiledLayer::UpdateTileTextures(const gfx::Rect& update_rect, 456 void TiledLayer::UpdateTileTextures(const gfx::Rect& update_rect,
457 const gfx::Rect& paint_rect, 457 const gfx::Rect& paint_rect,
458 int left, 458 int left,
459 int top, 459 int top,
460 int right, 460 int right,
461 int bottom, 461 int bottom,
462 ResourceUpdateQueue* queue, 462 ResourceUpdateQueue* queue,
463 const OcclusionTracker<Layer>* occlusion) { 463 const OcclusionTracker<Layer>* occlusion) {
464 // The update_rect should be in layer space. So we have to convert the 464 // The update_rect should be in layer space. So we have to convert the
465 // paint_rect from content space to layer space. 465 // paint_rect from content space to layer space.
466 float width_scale = 466 float width_scale = 1 / draw_properties().contents_scale_x;
danakj 2014/09/13 13:04:50 Ok ya, this would be correct, but you need to fill
467 paint_properties().bounds.width() / 467 float height_scale = 1 / draw_properties().contents_scale_y;
468 static_cast<float>(content_bounds().width());
469 float height_scale =
470 paint_properties().bounds.height() /
471 static_cast<float>(content_bounds().height());
472 update_rect_ = gfx::ScaleRect(update_rect, width_scale, height_scale); 468 update_rect_ = gfx::ScaleRect(update_rect, width_scale, height_scale);
473 469
474 // Calling PrepareToUpdate() calls into WebKit to paint, which may have the 470 // Calling PrepareToUpdate() calls into WebKit to paint, which may have the
475 // side effect of disabling compositing, which causes our reference to the 471 // side effect of disabling compositing, which causes our reference to the
476 // texture updater to be deleted. However, we can't free the memory backing 472 // texture updater to be deleted. However, we can't free the memory backing
477 // the SkCanvas until the paint finishes, so we grab a local reference here to 473 // the SkCanvas until the paint finishes, so we grab a local reference here to
478 // hold the updater alive until the paint completes. 474 // hold the updater alive until the paint completes.
479 scoped_refptr<LayerUpdater> protector(Updater()); 475 scoped_refptr<LayerUpdater> protector(Updater());
480 gfx::Rect painted_opaque_rect; 476 gfx::Rect painted_opaque_rect;
481 Updater()->PrepareToUpdate(paint_rect, 477 Updater()->PrepareToUpdate(paint_rect,
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after
892 gfx::Rect prepaint_rect = visible_content_rect(); 888 gfx::Rect prepaint_rect = visible_content_rect();
893 prepaint_rect.Inset(-tiler_->tile_size().width() * kPrepaintColumns, 889 prepaint_rect.Inset(-tiler_->tile_size().width() * kPrepaintColumns,
894 -tiler_->tile_size().height() * kPrepaintRows); 890 -tiler_->tile_size().height() * kPrepaintRows);
895 gfx::Rect content_rect(content_bounds()); 891 gfx::Rect content_rect(content_bounds());
896 prepaint_rect.Intersect(content_rect); 892 prepaint_rect.Intersect(content_rect);
897 893
898 return prepaint_rect; 894 return prepaint_rect;
899 } 895 }
900 896
901 } // namespace cc 897 } // namespace cc
OLDNEW
« no previous file with comments | « no previous file | cc/layers/tiled_layer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698