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

Side by Side Diff: components/exo/surface.cc

Issue 2506883002: Revert of Remove SurfaceFactory::Create and SurfaceFactory::Destroy (Closed)
Patch Set: Created 4 years, 1 month 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "components/exo/surface.h" 5 #include "components/exo/surface.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/callback_helpers.h" 9 #include "base/callback_helpers.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 237
238 factory_owner_->surface_ = nullptr; 238 factory_owner_->surface_ = nullptr;
239 239
240 // Call pending frame callbacks with a null frame time to indicate that they 240 // Call pending frame callbacks with a null frame time to indicate that they
241 // have been cancelled. 241 // have been cancelled.
242 frame_callbacks_.splice(frame_callbacks_.end(), pending_frame_callbacks_); 242 frame_callbacks_.splice(frame_callbacks_.end(), pending_frame_callbacks_);
243 active_frame_callbacks_.splice(active_frame_callbacks_.end(), 243 active_frame_callbacks_.splice(active_frame_callbacks_.end(),
244 frame_callbacks_); 244 frame_callbacks_);
245 for (const auto& frame_callback : active_frame_callbacks_) 245 for (const auto& frame_callback : active_frame_callbacks_)
246 frame_callback.Run(base::TimeTicks()); 246 frame_callback.Run(base::TimeTicks());
247
247 if (begin_frame_source_ && needs_begin_frame_) 248 if (begin_frame_source_ && needs_begin_frame_)
248 begin_frame_source_->RemoveObserver(this); 249 begin_frame_source_->RemoveObserver(this);
249 250
250 factory_owner_->surface_factory_->EvictSurface(); 251 if (local_frame_id_.is_valid())
252 factory_owner_->surface_factory_->Destroy(local_frame_id_);
251 253
252 surface_manager_->UnregisterSurfaceFactoryClient( 254 surface_manager_->UnregisterSurfaceFactoryClient(
253 factory_owner_->frame_sink_id_); 255 factory_owner_->frame_sink_id_);
254 } 256 }
255 257
256 // static 258 // static
257 Surface* Surface::AsSurface(const aura::Window* window) { 259 Surface* Surface::AsSurface(const aura::Window* window) {
258 return window->GetProperty(kSurfaceKey); 260 return window->GetProperty(kSurfaceKey);
259 } 261 }
260 262
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
469 471
470 current_buffer_ = std::move(pending_buffer_); 472 current_buffer_ = std::move(pending_buffer_);
471 473
472 UpdateResource(true); 474 UpdateResource(true);
473 } 475 }
474 476
475 cc::LocalFrameId old_local_frame_id = local_frame_id_; 477 cc::LocalFrameId old_local_frame_id = local_frame_id_;
476 if (needs_commit_to_new_surface_ || !local_frame_id_.is_valid()) { 478 if (needs_commit_to_new_surface_ || !local_frame_id_.is_valid()) {
477 needs_commit_to_new_surface_ = false; 479 needs_commit_to_new_surface_ = false;
478 local_frame_id_ = factory_owner_->id_allocator_->GenerateId(); 480 local_frame_id_ = factory_owner_->id_allocator_->GenerateId();
481 factory_owner_->surface_factory_->Create(local_frame_id_);
479 } 482 }
480 483
481 UpdateSurface(true); 484 UpdateSurface(true);
482 485
486 if (old_local_frame_id.is_valid() && old_local_frame_id != local_frame_id_) {
487 factory_owner_->surface_factory_->SetPreviousFrameSurface(
488 local_frame_id_, old_local_frame_id);
489 factory_owner_->surface_factory_->Destroy(old_local_frame_id);
490 }
491
483 if (old_local_frame_id != local_frame_id_) { 492 if (old_local_frame_id != local_frame_id_) {
484 float contents_surface_to_layer_scale = 1.0; 493 float contents_surface_to_layer_scale = 1.0;
485 // The bounds must be updated before switching to the new surface, because 494 // The bounds must be updated before switching to the new surface, because
486 // the layer may be mirrored, in which case a surface change causes the 495 // the layer may be mirrored, in which case a surface change causes the
487 // mirror layer to update its surface using the latest bounds. 496 // mirror layer to update its surface using the latest bounds.
488 window_->layer()->SetBounds( 497 window_->layer()->SetBounds(
489 gfx::Rect(window_->layer()->bounds().origin(), content_size_)); 498 gfx::Rect(window_->layer()->bounds().origin(), content_size_));
490 window_->layer()->SetShowSurface( 499 window_->layer()->SetShowSurface(
491 cc::SurfaceId(factory_owner_->frame_sink_id_, local_frame_id_), 500 cc::SurfaceId(factory_owner_->frame_sink_id_, local_frame_id_),
492 base::Bind(&SatisfyCallback, base::Unretained(surface_manager_)), 501 base::Bind(&SatisfyCallback, base::Unretained(surface_manager_)),
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after
872 881
873 int64_t Surface::GetPropertyInternal(const void* key, 882 int64_t Surface::GetPropertyInternal(const void* key,
874 int64_t default_value) const { 883 int64_t default_value) const {
875 std::map<const void*, Value>::const_iterator iter = prop_map_.find(key); 884 std::map<const void*, Value>::const_iterator iter = prop_map_.find(key);
876 if (iter == prop_map_.end()) 885 if (iter == prop_map_.end())
877 return default_value; 886 return default_value;
878 return iter->second.value; 887 return iter->second.value;
879 } 888 }
880 889
881 } // namespace exo 890 } // namespace exo
OLDNEW
« no previous file with comments | « cc/test/test_compositor_frame_sink.cc ('k') | content/browser/frame_host/render_widget_host_view_child_frame.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698