OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |