Commit 4ca7192d authored by kylechar's avatar kylechar Committed by Commit Bot

Convert BeginFrameSource to use base::flat_set.

There are only ever a couple observers so base::flat_set should
have less overhead that std::unordered_set, especially given how
frequently it's copied.

Change-Id: Ib800e3461dbbb902041584ce8c4325eec4a91694
Reviewed-on: https://chromium-review.googlesource.com/c/1301965
Commit-Queue: kylechar <kylechar@chromium.org>
Reviewed-by: default avatardanakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#603161}
parent d896b43d
...@@ -146,7 +146,7 @@ BackToBackBeginFrameSource::~BackToBackBeginFrameSource() = default; ...@@ -146,7 +146,7 @@ BackToBackBeginFrameSource::~BackToBackBeginFrameSource() = default;
void BackToBackBeginFrameSource::AddObserver(BeginFrameObserver* obs) { void BackToBackBeginFrameSource::AddObserver(BeginFrameObserver* obs) {
DCHECK(obs); DCHECK(obs);
DCHECK(observers_.find(obs) == observers_.end()); DCHECK(!base::ContainsKey(observers_, obs));
observers_.insert(obs); observers_.insert(obs);
pending_begin_frame_observers_.insert(obs); pending_begin_frame_observers_.insert(obs);
obs->OnBeginFrameSourcePausedChanged(false); obs->OnBeginFrameSourcePausedChanged(false);
...@@ -155,7 +155,7 @@ void BackToBackBeginFrameSource::AddObserver(BeginFrameObserver* obs) { ...@@ -155,7 +155,7 @@ void BackToBackBeginFrameSource::AddObserver(BeginFrameObserver* obs) {
void BackToBackBeginFrameSource::RemoveObserver(BeginFrameObserver* obs) { void BackToBackBeginFrameSource::RemoveObserver(BeginFrameObserver* obs) {
DCHECK(obs); DCHECK(obs);
DCHECK(observers_.find(obs) != observers_.end()); DCHECK(base::ContainsKey(observers_, obs));
observers_.erase(obs); observers_.erase(obs);
pending_begin_frame_observers_.erase(obs); pending_begin_frame_observers_.erase(obs);
if (pending_begin_frame_observers_.empty()) if (pending_begin_frame_observers_.empty())
...@@ -163,7 +163,7 @@ void BackToBackBeginFrameSource::RemoveObserver(BeginFrameObserver* obs) { ...@@ -163,7 +163,7 @@ void BackToBackBeginFrameSource::RemoveObserver(BeginFrameObserver* obs) {
} }
void BackToBackBeginFrameSource::DidFinishFrame(BeginFrameObserver* obs) { void BackToBackBeginFrameSource::DidFinishFrame(BeginFrameObserver* obs) {
if (observers_.find(obs) != observers_.end()) { if (base::ContainsKey(observers_, obs)) {
pending_begin_frame_observers_.insert(obs); pending_begin_frame_observers_.insert(obs);
time_source_->SetActive(true); time_source_->SetActive(true);
} }
...@@ -190,7 +190,7 @@ void BackToBackBeginFrameSource::OnTimerTick() { ...@@ -190,7 +190,7 @@ void BackToBackBeginFrameSource::OnTimerTick() {
// This must happen after getting the LastTickTime() from the time source. // This must happen after getting the LastTickTime() from the time source.
time_source_->SetActive(false); time_source_->SetActive(false);
std::unordered_set<BeginFrameObserver*> pending_observers; base::flat_set<BeginFrameObserver*> pending_observers;
pending_observers.swap(pending_begin_frame_observers_); pending_observers.swap(pending_begin_frame_observers_);
DCHECK(!pending_observers.empty()); DCHECK(!pending_observers.empty());
for (BeginFrameObserver* obs : pending_observers) for (BeginFrameObserver* obs : pending_observers)
...@@ -232,7 +232,7 @@ BeginFrameArgs DelayBasedBeginFrameSource::CreateBeginFrameArgs( ...@@ -232,7 +232,7 @@ BeginFrameArgs DelayBasedBeginFrameSource::CreateBeginFrameArgs(
void DelayBasedBeginFrameSource::AddObserver(BeginFrameObserver* obs) { void DelayBasedBeginFrameSource::AddObserver(BeginFrameObserver* obs) {
DCHECK(obs); DCHECK(obs);
DCHECK(observers_.find(obs) == observers_.end()); DCHECK(!base::ContainsKey(observers_, obs));
observers_.insert(obs); observers_.insert(obs);
obs->OnBeginFrameSourcePausedChanged(false); obs->OnBeginFrameSourcePausedChanged(false);
...@@ -259,7 +259,7 @@ void DelayBasedBeginFrameSource::AddObserver(BeginFrameObserver* obs) { ...@@ -259,7 +259,7 @@ void DelayBasedBeginFrameSource::AddObserver(BeginFrameObserver* obs) {
void DelayBasedBeginFrameSource::RemoveObserver(BeginFrameObserver* obs) { void DelayBasedBeginFrameSource::RemoveObserver(BeginFrameObserver* obs) {
DCHECK(obs); DCHECK(obs);
DCHECK(observers_.find(obs) != observers_.end()); DCHECK(base::ContainsKey(observers_, obs));
observers_.erase(obs); observers_.erase(obs);
if (observers_.empty()) if (observers_.empty())
...@@ -278,7 +278,7 @@ void DelayBasedBeginFrameSource::OnTimerTick() { ...@@ -278,7 +278,7 @@ void DelayBasedBeginFrameSource::OnTimerTick() {
if (RequestCallbackOnGpuAvailable()) if (RequestCallbackOnGpuAvailable())
return; return;
last_begin_frame_args_ = CreateBeginFrameArgs(time_source_->LastTickTime()); last_begin_frame_args_ = CreateBeginFrameArgs(time_source_->LastTickTime());
std::unordered_set<BeginFrameObserver*> observers(observers_); base::flat_set<BeginFrameObserver*> observers(observers_);
for (auto* obs : observers) for (auto* obs : observers)
IssueBeginFrameToObserver(obs, last_begin_frame_args_); IssueBeginFrameToObserver(obs, last_begin_frame_args_);
} }
...@@ -326,7 +326,7 @@ void ExternalBeginFrameSource::AsValueInto( ...@@ -326,7 +326,7 @@ void ExternalBeginFrameSource::AsValueInto(
void ExternalBeginFrameSource::AddObserver(BeginFrameObserver* obs) { void ExternalBeginFrameSource::AddObserver(BeginFrameObserver* obs) {
DCHECK(obs); DCHECK(obs);
DCHECK(observers_.find(obs) == observers_.end()); DCHECK(!base::ContainsKey(observers_, obs));
bool observers_was_empty = observers_.empty(); bool observers_was_empty = observers_.empty();
observers_.insert(obs); observers_.insert(obs);
...@@ -344,7 +344,7 @@ void ExternalBeginFrameSource::AddObserver(BeginFrameObserver* obs) { ...@@ -344,7 +344,7 @@ void ExternalBeginFrameSource::AddObserver(BeginFrameObserver* obs) {
void ExternalBeginFrameSource::RemoveObserver(BeginFrameObserver* obs) { void ExternalBeginFrameSource::RemoveObserver(BeginFrameObserver* obs) {
DCHECK(obs); DCHECK(obs);
DCHECK(observers_.find(obs) != observers_.end()); DCHECK(base::ContainsKey(observers_, obs));
observers_.erase(obs); observers_.erase(obs);
if (observers_.empty()) if (observers_.empty())
...@@ -364,7 +364,7 @@ void ExternalBeginFrameSource::OnSetBeginFrameSourcePaused(bool paused) { ...@@ -364,7 +364,7 @@ void ExternalBeginFrameSource::OnSetBeginFrameSourcePaused(bool paused) {
if (paused_ == paused) if (paused_ == paused)
return; return;
paused_ = paused; paused_ = paused;
std::unordered_set<BeginFrameObserver*> observers(observers_); base::flat_set<BeginFrameObserver*> observers(observers_);
for (auto* obs : observers) for (auto* obs : observers)
obs->OnBeginFrameSourcePausedChanged(paused_); obs->OnBeginFrameSourcePausedChanged(paused_);
} }
...@@ -384,7 +384,7 @@ void ExternalBeginFrameSource::OnBeginFrame(const BeginFrameArgs& args) { ...@@ -384,7 +384,7 @@ void ExternalBeginFrameSource::OnBeginFrame(const BeginFrameArgs& args) {
} }
last_begin_frame_args_ = args; last_begin_frame_args_ = args;
std::unordered_set<BeginFrameObserver*> observers(observers_); base::flat_set<BeginFrameObserver*> observers(observers_);
for (auto* obs : observers) { for (auto* obs : observers) {
// It is possible that the source in which |args| originate changes, or that // It is possible that the source in which |args| originate changes, or that
// our hookup to this source changes, so we have to check for continuity. // our hookup to this source changes, so we have to check for continuity.
......
...@@ -8,9 +8,9 @@ ...@@ -8,9 +8,9 @@
#include <stddef.h> #include <stddef.h>
#include <stdint.h> #include <stdint.h>
#include <set>
#include <string> #include <string>
#include "base/containers/flat_set.h"
#include "base/logging.h" #include "base/logging.h"
#include "base/macros.h" #include "base/macros.h"
#include "base/trace_event/trace_event.h" #include "base/trace_event/trace_event.h"
...@@ -223,8 +223,8 @@ class VIZ_COMMON_EXPORT BackToBackBeginFrameSource ...@@ -223,8 +223,8 @@ class VIZ_COMMON_EXPORT BackToBackBeginFrameSource
private: private:
std::unique_ptr<DelayBasedTimeSource> time_source_; std::unique_ptr<DelayBasedTimeSource> time_source_;
std::unordered_set<BeginFrameObserver*> observers_; base::flat_set<BeginFrameObserver*> observers_;
std::unordered_set<BeginFrameObserver*> pending_begin_frame_observers_; base::flat_set<BeginFrameObserver*> pending_begin_frame_observers_;
uint64_t next_sequence_number_; uint64_t next_sequence_number_;
base::WeakPtrFactory<BackToBackBeginFrameSource> weak_factory_; base::WeakPtrFactory<BackToBackBeginFrameSource> weak_factory_;
...@@ -261,7 +261,7 @@ class VIZ_COMMON_EXPORT DelayBasedBeginFrameSource ...@@ -261,7 +261,7 @@ class VIZ_COMMON_EXPORT DelayBasedBeginFrameSource
const BeginFrameArgs& args); const BeginFrameArgs& args);
std::unique_ptr<DelayBasedTimeSource> time_source_; std::unique_ptr<DelayBasedTimeSource> time_source_;
std::unordered_set<BeginFrameObserver*> observers_; base::flat_set<BeginFrameObserver*> observers_;
base::TimeTicks last_timebase_; base::TimeTicks last_timebase_;
BeginFrameArgs last_begin_frame_args_; BeginFrameArgs last_begin_frame_args_;
uint64_t next_sequence_number_; uint64_t next_sequence_number_;
...@@ -306,7 +306,7 @@ class VIZ_COMMON_EXPORT ExternalBeginFrameSource : public BeginFrameSource { ...@@ -306,7 +306,7 @@ class VIZ_COMMON_EXPORT ExternalBeginFrameSource : public BeginFrameSource {
virtual BeginFrameArgs GetMissedBeginFrameArgs(BeginFrameObserver* obs); virtual BeginFrameArgs GetMissedBeginFrameArgs(BeginFrameObserver* obs);
BeginFrameArgs last_begin_frame_args_; BeginFrameArgs last_begin_frame_args_;
std::unordered_set<BeginFrameObserver*> observers_; base::flat_set<BeginFrameObserver*> observers_;
ExternalBeginFrameSourceClient* client_; ExternalBeginFrameSourceClient* client_;
bool paused_ = false; bool paused_ = false;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment