Chromium Code Reviews| 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 |