| Index: cc/surfaces/frame_sink_manager.cc
|
| diff --git a/cc/surfaces/frame_sink_manager.cc b/cc/surfaces/frame_sink_manager.cc
|
| index c16a921fc47a38413dc4e0724903b8e7171c4815..8b0f21c82eaa543a938fac40856ae25ae8227a50 100644
|
| --- a/cc/surfaces/frame_sink_manager.cc
|
| +++ b/cc/surfaces/frame_sink_manager.cc
|
| @@ -9,6 +9,7 @@
|
|
|
| #include "base/logging.h"
|
| #include "cc/surfaces/frame_sink_manager_client.h"
|
| +#include "cc/surfaces/primary_begin_frame_source.h"
|
|
|
| #if DCHECK_IS_ON()
|
| #include <sstream>
|
| @@ -16,15 +17,14 @@
|
|
|
| namespace cc {
|
|
|
| -FrameSinkManager::FrameSinkSourceMapping::FrameSinkSourceMapping()
|
| - : source(nullptr) {}
|
| +FrameSinkManager::FrameSinkSourceMapping::FrameSinkSourceMapping() = default;
|
|
|
| FrameSinkManager::FrameSinkSourceMapping::FrameSinkSourceMapping(
|
| const FrameSinkSourceMapping& other) = default;
|
|
|
| -FrameSinkManager::FrameSinkSourceMapping::~FrameSinkSourceMapping() {}
|
| +FrameSinkManager::FrameSinkSourceMapping::~FrameSinkSourceMapping() = default;
|
|
|
| -FrameSinkManager::FrameSinkManager() {}
|
| +FrameSinkManager::FrameSinkManager() = default;
|
|
|
| FrameSinkManager::~FrameSinkManager() {
|
| // All CompositorFrameSinks should be unregistered prior to
|
| @@ -73,6 +73,14 @@ void FrameSinkManager::UnregisterFrameSinkManagerClient(
|
| clients_.erase(client_iter);
|
| }
|
|
|
| +std::unique_ptr<BeginFrameSource>
|
| +FrameSinkManager::CreatePrimaryBeginFrameSource() {
|
| + std::unique_ptr<PrimaryBeginFrameSource> begin_frame_source =
|
| + base::MakeUnique<PrimaryBeginFrameSource>();
|
| + begin_frame_source->Init(this);
|
| + return std::move(begin_frame_source);
|
| +}
|
| +
|
| void FrameSinkManager::RegisterBeginFrameSource(
|
| BeginFrameSource* source,
|
| const FrameSinkId& frame_sink_id) {
|
| @@ -82,6 +90,9 @@ void FrameSinkManager::RegisterBeginFrameSource(
|
|
|
| registered_sources_[source] = frame_sink_id;
|
| RecursivelyAttachBeginFrameSource(frame_sink_id, source);
|
| +
|
| + for (auto& observer : observer_list_)
|
| + observer.OnBeginFrameSourceAdded(source);
|
| }
|
|
|
| void FrameSinkManager::UnregisterBeginFrameSource(BeginFrameSource* source) {
|
| @@ -91,6 +102,9 @@ void FrameSinkManager::UnregisterBeginFrameSource(BeginFrameSource* source) {
|
| FrameSinkId frame_sink_id = registered_sources_[source];
|
| registered_sources_.erase(source);
|
|
|
| + for (auto& observer : observer_list_)
|
| + observer.OnBeginFrameSourceRemoved(source);
|
| +
|
| if (frame_sink_source_map_.count(frame_sink_id) == 0u)
|
| return;
|
|
|
| @@ -103,6 +117,12 @@ void FrameSinkManager::UnregisterBeginFrameSource(BeginFrameSource* source) {
|
| RecursivelyAttachBeginFrameSource(source_iter.second, source_iter.first);
|
| }
|
|
|
| +BeginFrameSource* FrameSinkManager::GetPrimaryBeginFrameSource() {
|
| + if (registered_sources_.empty())
|
| + return nullptr;
|
| + return registered_sources_.begin()->first;
|
| +}
|
| +
|
| void FrameSinkManager::RecursivelyAttachBeginFrameSource(
|
| const FrameSinkId& frame_sink_id,
|
| BeginFrameSource* source) {
|
|
|