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

Unified Diff: ui/compositor/layer.cc

Issue 2582823002: WIP: Surface Synchronization System
Patch Set: Only create ClientSurfaceEmbedder if window is visible. Trash it otherwise. Created 3 years, 11 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 side-by-side diff with in-line comments
Download patch
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) {

Powered by Google App Engine
This is Rietveld 408576698