| 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 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
| 11 #include "base/command_line.h" | 11 #include "base/command_line.h" |
| 12 #include "base/json/json_writer.h" | 12 #include "base/json/json_writer.h" |
| 13 #include "base/logging.h" | 13 #include "base/logging.h" |
| 14 #include "base/memory/scoped_ptr.h" | 14 #include "base/memory/scoped_ptr.h" |
| 15 #include "base/trace_event/trace_event.h" | 15 #include "base/trace_event/trace_event.h" |
| 16 #include "cc/layers/layer_settings.h" | |
| 17 #include "cc/layers/nine_patch_layer.h" | 16 #include "cc/layers/nine_patch_layer.h" |
| 18 #include "cc/layers/picture_layer.h" | 17 #include "cc/layers/picture_layer.h" |
| 19 #include "cc/layers/solid_color_layer.h" | 18 #include "cc/layers/solid_color_layer.h" |
| 20 #include "cc/layers/surface_layer.h" | 19 #include "cc/layers/surface_layer.h" |
| 21 #include "cc/layers/texture_layer.h" | 20 #include "cc/layers/texture_layer.h" |
| 22 #include "cc/output/copy_output_request.h" | 21 #include "cc/output/copy_output_request.h" |
| 23 #include "cc/output/filter_operation.h" | 22 #include "cc/output/filter_operation.h" |
| 24 #include "cc/output/filter_operations.h" | 23 #include "cc/output/filter_operations.h" |
| 25 #include "cc/playback/display_item_list_settings.h" | 24 #include "cc/playback/display_item_list_settings.h" |
| 26 #include "cc/resources/transferable_resource.h" | 25 #include "cc/resources/transferable_resource.h" |
| (...skipping 486 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 513 | 512 |
| 514 SetLayerFilters(); | 513 SetLayerFilters(); |
| 515 SetLayerBackgroundFilters(); | 514 SetLayerBackgroundFilters(); |
| 516 } | 515 } |
| 517 | 516 |
| 518 bool Layer::HasPendingThreadedAnimationsForTesting() const { | 517 bool Layer::HasPendingThreadedAnimationsForTesting() const { |
| 519 return animator_->HasPendingThreadedAnimationsForTesting(); | 518 return animator_->HasPendingThreadedAnimationsForTesting(); |
| 520 } | 519 } |
| 521 | 520 |
| 522 void Layer::SwitchCCLayerForTest() { | 521 void Layer::SwitchCCLayerForTest() { |
| 523 scoped_refptr<cc::Layer> new_layer = | 522 scoped_refptr<cc::Layer> new_layer = cc::PictureLayer::Create(this); |
| 524 cc::PictureLayer::Create(cc::LayerSettings(), this); | |
| 525 SwitchToLayer(new_layer); | 523 SwitchToLayer(new_layer); |
| 526 content_layer_ = new_layer; | 524 content_layer_ = new_layer; |
| 527 } | 525 } |
| 528 | 526 |
| 529 void Layer::SetTextureMailbox( | 527 void Layer::SetTextureMailbox( |
| 530 const cc::TextureMailbox& mailbox, | 528 const cc::TextureMailbox& mailbox, |
| 531 scoped_ptr<cc::SingleReleaseCallback> release_callback, | 529 scoped_ptr<cc::SingleReleaseCallback> release_callback, |
| 532 gfx::Size texture_size_in_dip) { | 530 gfx::Size texture_size_in_dip) { |
| 533 DCHECK(type_ == LAYER_TEXTURED || type_ == LAYER_SOLID_COLOR); | 531 DCHECK(type_ == LAYER_TEXTURED || type_ == LAYER_SOLID_COLOR); |
| 534 DCHECK(mailbox.IsValid()); | 532 DCHECK(mailbox.IsValid()); |
| 535 DCHECK(release_callback); | 533 DCHECK(release_callback); |
| 536 if (!texture_layer_.get()) { | 534 if (!texture_layer_.get()) { |
| 537 scoped_refptr<cc::TextureLayer> new_layer = | 535 scoped_refptr<cc::TextureLayer> new_layer = |
| 538 cc::TextureLayer::CreateForMailbox(cc::LayerSettings(), this); | 536 cc::TextureLayer::CreateForMailbox(this); |
| 539 new_layer->SetFlipped(true); | 537 new_layer->SetFlipped(true); |
| 540 SwitchToLayer(new_layer); | 538 SwitchToLayer(new_layer); |
| 541 texture_layer_ = new_layer; | 539 texture_layer_ = new_layer; |
| 542 // Reset the frame_size_in_dip_ so that SetTextureSize() will not early out, | 540 // Reset the frame_size_in_dip_ so that SetTextureSize() will not early out, |
| 543 // the frame_size_in_dip_ was for a previous (different) |texture_layer_|. | 541 // the frame_size_in_dip_ was for a previous (different) |texture_layer_|. |
| 544 frame_size_in_dip_ = gfx::Size(); | 542 frame_size_in_dip_ = gfx::Size(); |
| 545 } | 543 } |
| 546 if (mailbox_release_callback_) | 544 if (mailbox_release_callback_) |
| 547 mailbox_release_callback_->Run(gpu::SyncToken(), false); | 545 mailbox_release_callback_->Run(gpu::SyncToken(), false); |
| 548 mailbox_release_callback_ = std::move(release_callback); | 546 mailbox_release_callback_ = std::move(release_callback); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 571 | 569 |
| 572 void Layer::SetShowSurface( | 570 void Layer::SetShowSurface( |
| 573 cc::SurfaceId surface_id, | 571 cc::SurfaceId surface_id, |
| 574 const cc::SurfaceLayer::SatisfyCallback& satisfy_callback, | 572 const cc::SurfaceLayer::SatisfyCallback& satisfy_callback, |
| 575 const cc::SurfaceLayer::RequireCallback& require_callback, | 573 const cc::SurfaceLayer::RequireCallback& require_callback, |
| 576 gfx::Size surface_size, | 574 gfx::Size surface_size, |
| 577 float scale, | 575 float scale, |
| 578 gfx::Size frame_size_in_dip) { | 576 gfx::Size frame_size_in_dip) { |
| 579 DCHECK(type_ == LAYER_TEXTURED || type_ == LAYER_SOLID_COLOR); | 577 DCHECK(type_ == LAYER_TEXTURED || type_ == LAYER_SOLID_COLOR); |
| 580 | 578 |
| 581 scoped_refptr<cc::SurfaceLayer> new_layer = cc::SurfaceLayer::Create( | 579 scoped_refptr<cc::SurfaceLayer> new_layer = |
| 582 cc::LayerSettings(), satisfy_callback, require_callback); | 580 cc::SurfaceLayer::Create(satisfy_callback, require_callback); |
| 583 new_layer->SetSurfaceId(surface_id, scale, surface_size); | 581 new_layer->SetSurfaceId(surface_id, scale, surface_size); |
| 584 SwitchToLayer(new_layer); | 582 SwitchToLayer(new_layer); |
| 585 surface_layer_ = new_layer; | 583 surface_layer_ = new_layer; |
| 586 | 584 |
| 587 frame_size_in_dip_ = frame_size_in_dip; | 585 frame_size_in_dip_ = frame_size_in_dip; |
| 588 RecomputeDrawsContentAndUVRect(); | 586 RecomputeDrawsContentAndUVRect(); |
| 589 } | 587 } |
| 590 | 588 |
| 591 void Layer::SetShowSolidColorContent() { | 589 void Layer::SetShowSolidColorContent() { |
| 592 DCHECK_EQ(type_, LAYER_SOLID_COLOR); | 590 DCHECK_EQ(type_, LAYER_SOLID_COLOR); |
| 593 | 591 |
| 594 if (solid_color_layer_.get()) | 592 if (solid_color_layer_.get()) |
| 595 return; | 593 return; |
| 596 | 594 |
| 597 scoped_refptr<cc::SolidColorLayer> new_layer = | 595 scoped_refptr<cc::SolidColorLayer> new_layer = cc::SolidColorLayer::Create(); |
| 598 cc::SolidColorLayer::Create(cc::LayerSettings()); | |
| 599 SwitchToLayer(new_layer); | 596 SwitchToLayer(new_layer); |
| 600 solid_color_layer_ = new_layer; | 597 solid_color_layer_ = new_layer; |
| 601 | 598 |
| 602 mailbox_ = cc::TextureMailbox(); | 599 mailbox_ = cc::TextureMailbox(); |
| 603 if (mailbox_release_callback_) { | 600 if (mailbox_release_callback_) { |
| 604 mailbox_release_callback_->Run(gpu::SyncToken(), false); | 601 mailbox_release_callback_->Run(gpu::SyncToken(), false); |
| 605 mailbox_release_callback_.reset(); | 602 mailbox_release_callback_.reset(); |
| 606 } | 603 } |
| 607 RecomputeDrawsContentAndUVRect(); | 604 RecomputeDrawsContentAndUVRect(); |
| 608 } | 605 } |
| (...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 957 return cc_layer_; | 954 return cc_layer_; |
| 958 } | 955 } |
| 959 | 956 |
| 960 LayerThreadedAnimationDelegate* Layer::GetThreadedAnimationDelegate() { | 957 LayerThreadedAnimationDelegate* Layer::GetThreadedAnimationDelegate() { |
| 961 DCHECK(animator_); | 958 DCHECK(animator_); |
| 962 return animator_.get(); | 959 return animator_.get(); |
| 963 } | 960 } |
| 964 | 961 |
| 965 void Layer::CreateCcLayer() { | 962 void Layer::CreateCcLayer() { |
| 966 if (type_ == LAYER_SOLID_COLOR) { | 963 if (type_ == LAYER_SOLID_COLOR) { |
| 967 solid_color_layer_ = cc::SolidColorLayer::Create(cc::LayerSettings()); | 964 solid_color_layer_ = cc::SolidColorLayer::Create(); |
| 968 cc_layer_ = solid_color_layer_.get(); | 965 cc_layer_ = solid_color_layer_.get(); |
| 969 } else if (type_ == LAYER_NINE_PATCH) { | 966 } else if (type_ == LAYER_NINE_PATCH) { |
| 970 nine_patch_layer_ = cc::NinePatchLayer::Create(cc::LayerSettings()); | 967 nine_patch_layer_ = cc::NinePatchLayer::Create(); |
| 971 cc_layer_ = nine_patch_layer_.get(); | 968 cc_layer_ = nine_patch_layer_.get(); |
| 972 } else { | 969 } else { |
| 973 content_layer_ = cc::PictureLayer::Create(cc::LayerSettings(), this); | 970 content_layer_ = cc::PictureLayer::Create(this); |
| 974 cc_layer_ = content_layer_.get(); | 971 cc_layer_ = content_layer_.get(); |
| 975 } | 972 } |
| 976 cc_layer_->SetTransformOrigin(gfx::Point3F()); | 973 cc_layer_->SetTransformOrigin(gfx::Point3F()); |
| 977 cc_layer_->SetContentsOpaque(true); | 974 cc_layer_->SetContentsOpaque(true); |
| 978 cc_layer_->SetIsDrawable(type_ != LAYER_NOT_DRAWN); | 975 cc_layer_->SetIsDrawable(type_ != LAYER_NOT_DRAWN); |
| 979 cc_layer_->SetLayerClient(this); | 976 cc_layer_->SetLayerClient(this); |
| 980 RecomputePosition(); | 977 RecomputePosition(); |
| 981 } | 978 } |
| 982 | 979 |
| 983 gfx::Transform Layer::transform() const { | 980 gfx::Transform Layer::transform() const { |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1026 if (animator_) { | 1023 if (animator_) { |
| 1027 animator_->ResetCompositor(compositor); | 1024 animator_->ResetCompositor(compositor); |
| 1028 animator_->RemoveFromCollection(collection); | 1025 animator_->RemoveFromCollection(collection); |
| 1029 } | 1026 } |
| 1030 | 1027 |
| 1031 for (auto* child : children_) | 1028 for (auto* child : children_) |
| 1032 child->ResetCompositorForAnimatorsInTree(compositor); | 1029 child->ResetCompositorForAnimatorsInTree(compositor); |
| 1033 } | 1030 } |
| 1034 | 1031 |
| 1035 } // namespace ui | 1032 } // namespace ui |
| OLD | NEW |