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

Side by Side Diff: ui/compositor/layer.cc

Issue 13042012: Browser side changes for software compositing (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 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 | « content/renderer/render_widget.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 "ui/compositor/layer.h" 5 #include "ui/compositor/layer.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 528 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 cc::TransferableResourceArray* list) { 539 cc::TransferableResourceArray* list) {
540 if (delegated_renderer_layer_) 540 if (delegated_renderer_layer_)
541 delegated_renderer_layer_->TakeUnusedResourcesForChildCompositor(list); 541 delegated_renderer_layer_->TakeUnusedResourcesForChildCompositor(list);
542 } 542 }
543 543
544 void Layer::SetColor(SkColor color) { 544 void Layer::SetColor(SkColor color) {
545 GetAnimator()->SetColor(color); 545 GetAnimator()->SetColor(color);
546 } 546 }
547 547
548 bool Layer::SchedulePaint(const gfx::Rect& invalid_rect) { 548 bool Layer::SchedulePaint(const gfx::Rect& invalid_rect) {
549 if (type_ == LAYER_SOLID_COLOR || (!delegate_ && !texture_)) 549 if (type_ == LAYER_SOLID_COLOR)
550 return false; 550 return false;
551 551
552 damaged_region_.op(invalid_rect.x(), 552 damaged_region_.op(invalid_rect.x(),
553 invalid_rect.y(), 553 invalid_rect.y(),
554 invalid_rect.right(), 554 invalid_rect.right(),
555 invalid_rect.bottom(), 555 invalid_rect.bottom(),
556 SkRegion::kUnion_Op); 556 SkRegion::kUnion_Op);
557 ScheduleDraw(); 557 ScheduleDraw();
558 return true; 558 return true;
559 } 559 }
560 560
561 void Layer::ScheduleDraw() { 561 void Layer::ScheduleDraw() {
562 Compositor* compositor = GetCompositor(); 562 Compositor* compositor = GetCompositor();
563 if (compositor) 563 if (compositor)
564 compositor->ScheduleDraw(); 564 compositor->ScheduleDraw();
565 } 565 }
566 566
567 void Layer::SendDamagedRects() { 567 void Layer::SendDamagedRects() {
568 if ((delegate_ || texture_) && !damaged_region_.isEmpty()) { 568 for (SkRegion::Iterator iter(damaged_region_);
piman 2013/04/05 21:07:29 The whole point of this logic is that we don't wan
569 for (SkRegion::Iterator iter(damaged_region_); 569 !iter.done(); iter.next()) {
570 !iter.done(); iter.next()) { 570 const SkIRect& sk_damaged = iter.rect();
571 const SkIRect& sk_damaged = iter.rect(); 571 gfx::Rect damaged(
572 gfx::Rect damaged( 572 sk_damaged.x(),
573 sk_damaged.x(), 573 sk_damaged.y(),
574 sk_damaged.y(), 574 sk_damaged.width(),
575 sk_damaged.width(), 575 sk_damaged.height());
576 sk_damaged.height());
577 576
578 gfx::Rect damaged_in_pixel = ConvertRectToPixel(this, damaged); 577 gfx::Rect damaged_in_pixel = ConvertRectToPixel(this, damaged);
579 cc_layer_->SetNeedsDisplayRect(damaged_in_pixel); 578 cc_layer_->SetNeedsDisplayRect(damaged_in_pixel);
580 }
581 damaged_region_.setEmpty();
582 } 579 }
580 damaged_region_.setEmpty();
583 for (size_t i = 0; i < children_.size(); ++i) 581 for (size_t i = 0; i < children_.size(); ++i)
584 children_[i]->SendDamagedRects(); 582 children_[i]->SendDamagedRects();
585 } 583 }
586 584
587 void Layer::SuppressPaint() { 585 void Layer::SuppressPaint() {
588 if (!delegate_) 586 if (!delegate_)
589 return; 587 return;
590 delegate_ = NULL; 588 delegate_ = NULL;
591 for (size_t i = 0; i < children_.size(); ++i) 589 for (size_t i = 0; i < children_.size(); ++i)
592 children_[i]->SuppressPaint(); 590 children_[i]->SuppressPaint();
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
926 texture_layer_->SetUV(uv_top_left, uv_bottom_right); 924 texture_layer_->SetUV(uv_top_left, uv_bottom_right);
927 } else if (delegated_renderer_layer_.get()) { 925 } else if (delegated_renderer_layer_.get()) {
928 delegated_renderer_layer_->SetDisplaySize( 926 delegated_renderer_layer_->SetDisplaySize(
929 ConvertSizeToPixel(this, delegated_frame_size_in_dip_)); 927 ConvertSizeToPixel(this, delegated_frame_size_in_dip_));
930 size.ClampToMax(delegated_frame_size_in_dip_); 928 size.ClampToMax(delegated_frame_size_in_dip_);
931 } 929 }
932 cc_layer_->SetBounds(ConvertSizeToPixel(this, size)); 930 cc_layer_->SetBounds(ConvertSizeToPixel(this, size));
933 } 931 }
934 932
935 } // namespace ui 933 } // namespace ui
OLDNEW
« no previous file with comments | « content/renderer/render_widget.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698