| Index: ui/compositor/layer.cc
|
| diff --git a/ui/compositor/layer.cc b/ui/compositor/layer.cc
|
| index be6b6e525f82a92f809e5df6172f40b5f29e8de9..0eb98ff5f858a311fb74d0e3fceeb56270e8c9a4 100644
|
| --- a/ui/compositor/layer.cc
|
| +++ b/ui/compositor/layer.cc
|
| @@ -182,8 +182,9 @@ std::unique_ptr<Layer> Layer::Clone() const {
|
| clone->SetAlphaShape(base::MakeUnique<SkRegion>(*alpha_shape_));
|
|
|
| // cc::Layer state.
|
| - if (surface_layer_ && surface_layer_->surface_info().id().is_valid()) {
|
| - clone->SetShowSurface(surface_layer_->surface_info(),
|
| + if (surface_layer_ &&
|
| + surface_layer_->primary_surface_info().id().is_valid()) {
|
| + clone->SetShowSurface(surface_layer_->primary_surface_info(),
|
| surface_layer_->surface_reference_factory());
|
| } else if (type_ == LAYER_SOLID_COLOR) {
|
| clone->SetColor(GetTargetColor());
|
| @@ -656,13 +657,16 @@ bool Layer::TextureFlipped() const {
|
| void Layer::SetShowSurface(
|
| const cc::SurfaceInfo& surface_info,
|
| scoped_refptr<cc::SurfaceReferenceFactory> ref_factory) {
|
| - DCHECK(type_ == LAYER_TEXTURED || type_ == LAYER_SOLID_COLOR);
|
| + DCHECK(type_ == LAYER_TEXTURED || type_ == LAYER_SOLID_COLOR ||
|
| + type_ == LAYER_SURFACE);
|
|
|
| - scoped_refptr<cc::SurfaceLayer> new_layer =
|
| - cc::SurfaceLayer::Create(ref_factory);
|
| - new_layer->SetSurfaceInfo(surface_info);
|
| - SwitchToLayer(new_layer);
|
| - surface_layer_ = new_layer;
|
| + if (!surface_layer_) {
|
| + scoped_refptr<cc::SurfaceLayer> new_layer =
|
| + cc::SurfaceLayer::Create(ref_factory);
|
| + SwitchToLayer(new_layer);
|
| + surface_layer_ = new_layer;
|
| + }
|
| + surface_layer_->SwapSurfaceInfo(surface_info);
|
|
|
| frame_size_in_dip_ = gfx::ConvertSizeToDIP(surface_info.device_scale_factor(),
|
| surface_info.size_in_pixels());
|
| @@ -1092,7 +1096,7 @@ LayerThreadedAnimationDelegate* Layer::GetThreadedAnimationDelegate() {
|
| }
|
|
|
| void Layer::CreateCcLayer() {
|
| - if (type_ == LAYER_SOLID_COLOR) {
|
| + if (type_ == LAYER_SOLID_COLOR || type_ == LAYER_SURFACE) {
|
| solid_color_layer_ = cc::SolidColorLayer::Create();
|
| cc_layer_ = solid_color_layer_.get();
|
| } else if (type_ == LAYER_NINE_PATCH) {
|
|
|