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

Side by Side Diff: cc/picture_layer_impl.cc

Issue 12321053: cc: Complete pending tile uploads if they are needed for tree activation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased after managed_tile_state refactoring. 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 | « no previous file | cc/resource_provider.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 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/picture_layer_impl.h" 5 #include "cc/picture_layer_impl.h"
6 6
7 #include "base/time.h" 7 #include "base/time.h"
8 #include "cc/append_quads_data.h" 8 #include "cc/append_quads_data.h"
9 #include "cc/checkerboard_draw_quad.h" 9 #include "cc/checkerboard_draw_quad.h"
10 #include "cc/debug_border_draw_quad.h" 10 #include "cc/debug_border_draw_quad.h"
(...skipping 489 matching lines...) Expand 10 before | Expand all | Expand 10 after
500 const gfx::Rect& rect = visible_content_rect(); 500 const gfx::Rect& rect = visible_content_rect();
501 501
502 float raster_contents_scale = 502 float raster_contents_scale =
503 raster_page_scale_ * 503 raster_page_scale_ *
504 raster_device_scale_ * 504 raster_device_scale_ *
505 raster_source_scale_; 505 raster_source_scale_;
506 506
507 float min_acceptable_scale = 507 float min_acceptable_scale =
508 std::min(raster_contents_scale, ideal_contents_scale_); 508 std::min(raster_contents_scale, ideal_contents_scale_);
509 509
510 TreePriority tree_priority =
511 layer_tree_impl()->tile_manager()->GlobalState().tree_priority;
512 bool should_force_uploads =
513 tree_priority != SMOOTHNESS_TAKES_PRIORITY &&
514 layer_tree_impl()->animationRegistrar()->
515 active_animation_controllers().empty();
516
510 if (PictureLayerImpl* twin = ActiveTwin()) { 517 if (PictureLayerImpl* twin = ActiveTwin()) {
511 float twin_raster_contents_scale = 518 float twin_raster_contents_scale =
512 twin->raster_page_scale_ * 519 twin->raster_page_scale_ *
513 twin->raster_device_scale_ * 520 twin->raster_device_scale_ *
514 twin->raster_source_scale_; 521 twin->raster_source_scale_;
515 522
516 min_acceptable_scale = std::min( 523 min_acceptable_scale = std::min(
517 min_acceptable_scale, 524 min_acceptable_scale,
518 std::min(twin->ideal_contents_scale_, twin_raster_contents_scale)); 525 std::min(twin->ideal_contents_scale_, twin_raster_contents_scale));
519 } 526 }
520 527
521 Region missing_region = rect; 528 Region missing_region = rect;
522 for (size_t i = 0; i < tilings_->num_tilings(); ++i) { 529 for (size_t i = 0; i < tilings_->num_tilings(); ++i) {
523 PictureLayerTiling* tiling = tilings_->tiling_at(i); 530 PictureLayerTiling* tiling = tilings_->tiling_at(i);
524 531
525 if (tiling->contents_scale() < min_acceptable_scale) 532 if (tiling->contents_scale() < min_acceptable_scale)
526 continue; 533 continue;
527 534
528 for (PictureLayerTiling::Iterator iter(tiling, 535 for (PictureLayerTiling::Iterator iter(tiling,
529 contents_scale_x(), 536 contents_scale_x(),
530 rect, 537 rect,
531 PictureLayerTiling::LayerDeviceAlignm entUnknown); 538 PictureLayerTiling::LayerDeviceAlignm entUnknown);
532 iter; 539 iter;
533 ++iter) { 540 ++iter) {
541 if (should_force_uploads && iter)
542 layer_tree_impl()->tile_manager()->ForceTileUploadToComplete(*iter);
534 // A null tile (i.e. no recording) is considered "ready". 543 // A null tile (i.e. no recording) is considered "ready".
535 if (!*iter || iter->drawing_info().IsReadyToDraw()) 544 if (!*iter || iter->drawing_info().IsReadyToDraw())
536 missing_region.Subtract(iter.geometry_rect()); 545 missing_region.Subtract(iter.geometry_rect());
537 } 546 }
538 } 547 }
539 548
540 return missing_region.IsEmpty(); 549 return missing_region.IsEmpty();
541 } 550 }
542 551
543 PictureLayerTiling* PictureLayerImpl::AddTiling(float contents_scale) { 552 PictureLayerTiling* PictureLayerImpl::AddTiling(float contents_scale) {
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
803 scoped_ptr<base::Value> PictureLayerImpl::AsValue() const { 812 scoped_ptr<base::Value> PictureLayerImpl::AsValue() const {
804 scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue()); 813 scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue());
805 LayerImpl::AsValueInto(state.get()); 814 LayerImpl::AsValueInto(state.get());
806 815
807 state->SetDouble("ideal_contents_scale", ideal_contents_scale_); 816 state->SetDouble("ideal_contents_scale", ideal_contents_scale_);
808 state->Set("tilings", tilings_->AsValue().release()); 817 state->Set("tilings", tilings_->AsValue().release());
809 return state.PassAs<base::Value>(); 818 return state.PassAs<base::Value>();
810 } 819 }
811 820
812 } // namespace cc 821 } // namespace cc
OLDNEW
« no previous file with comments | « no previous file | cc/resource_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698