OLD | NEW |
---|---|
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 Loading... | |
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 | |
248 if (begin_frame_source_ && needs_begin_frame_) | 247 if (begin_frame_source_ && needs_begin_frame_) |
249 begin_frame_source_->RemoveObserver(this); | 248 begin_frame_source_->RemoveObserver(this); |
250 | 249 |
251 if (!local_frame_id_.is_null()) | |
252 factory_owner_->surface_factory_->Destroy(local_frame_id_); | |
253 | 250 |
254 surface_manager_->UnregisterSurfaceFactoryClient( | 251 surface_manager_->UnregisterSurfaceFactoryClient( |
255 factory_owner_->frame_sink_id_); | 252 factory_owner_->frame_sink_id_); |
256 } | 253 } |
257 | 254 |
258 // static | 255 // static |
259 Surface* Surface::AsSurface(const aura::Window* window) { | 256 Surface* Surface::AsSurface(const aura::Window* window) { |
260 return window->GetProperty(kSurfaceKey); | 257 return window->GetProperty(kSurfaceKey); |
261 } | 258 } |
262 | 259 |
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
471 | 468 |
472 current_buffer_ = std::move(pending_buffer_); | 469 current_buffer_ = std::move(pending_buffer_); |
473 | 470 |
474 UpdateResource(true); | 471 UpdateResource(true); |
475 } | 472 } |
476 | 473 |
477 cc::LocalFrameId old_local_frame_id = local_frame_id_; | 474 cc::LocalFrameId old_local_frame_id = local_frame_id_; |
478 if (needs_commit_to_new_surface_ || local_frame_id_.is_null()) { | 475 if (needs_commit_to_new_surface_ || local_frame_id_.is_null()) { |
479 needs_commit_to_new_surface_ = false; | 476 needs_commit_to_new_surface_ = false; |
480 local_frame_id_ = factory_owner_->id_allocator_->GenerateId(); | 477 local_frame_id_ = factory_owner_->id_allocator_->GenerateId(); |
481 factory_owner_->surface_factory_->Create(local_frame_id_); | 478 factory_owner_->surface_factory_->SubmitCompositorFrame( |
Fady Samuel
2016/11/08 22:23:59
Is this necessary?
Saman Sami
2016/11/11 17:49:58
Removed
| |
479 local_frame_id_, cc::CompositorFrame(), | |
480 cc::SurfaceFactory::DrawCallback()); | |
482 } | 481 } |
483 | 482 |
484 UpdateSurface(true); | 483 UpdateSurface(true); |
485 | 484 |
486 if (!old_local_frame_id.is_null() && old_local_frame_id != local_frame_id_) { | 485 if (!old_local_frame_id.is_null() && old_local_frame_id != local_frame_id_) { |
487 factory_owner_->surface_factory_->SetPreviousFrameSurface( | 486 factory_owner_->surface_factory_->SetPreviousFrameSurface( |
488 local_frame_id_, old_local_frame_id); | 487 local_frame_id_, old_local_frame_id); |
489 factory_owner_->surface_factory_->Destroy(old_local_frame_id); | |
490 } | 488 } |
491 | 489 |
492 if (old_local_frame_id != local_frame_id_) { | 490 if (old_local_frame_id != local_frame_id_) { |
493 float contents_surface_to_layer_scale = 1.0; | 491 float contents_surface_to_layer_scale = 1.0; |
494 // The bounds must be updated before switching to the new surface, because | 492 // The bounds must be updated before switching to the new surface, because |
495 // the layer may be mirrored, in which case a surface change causes the | 493 // the layer may be mirrored, in which case a surface change causes the |
496 // mirror layer to update its surface using the latest bounds. | 494 // mirror layer to update its surface using the latest bounds. |
497 window_->layer()->SetBounds( | 495 window_->layer()->SetBounds( |
498 gfx::Rect(window_->layer()->bounds().origin(), content_size_)); | 496 gfx::Rect(window_->layer()->bounds().origin(), content_size_)); |
499 window_->layer()->SetShowSurface( | 497 window_->layer()->SetShowSurface( |
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
881 | 879 |
882 int64_t Surface::GetPropertyInternal(const void* key, | 880 int64_t Surface::GetPropertyInternal(const void* key, |
883 int64_t default_value) const { | 881 int64_t default_value) const { |
884 std::map<const void*, Value>::const_iterator iter = prop_map_.find(key); | 882 std::map<const void*, Value>::const_iterator iter = prop_map_.find(key); |
885 if (iter == prop_map_.end()) | 883 if (iter == prop_map_.end()) |
886 return default_value; | 884 return default_value; |
887 return iter->second.value; | 885 return iter->second.value; |
888 } | 886 } |
889 | 887 |
890 } // namespace exo | 888 } // namespace exo |
OLD | NEW |