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

Unified Diff: cc/surfaces/display.cc

Issue 2411793008: Adds BeginFrameControl via DevTools.
Patch Set: BFC prototype v2 with allow_latency_opts and waiting for BFOs. 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/surfaces/display.h ('k') | cc/surfaces/display_begin_frame_source.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/surfaces/display.cc
diff --git a/cc/surfaces/display.cc b/cc/surfaces/display.cc
index cc904a0742050926fbf8341dfe566979ff03352d..c6e98a73958b32792a7e83523d4dd68904576396 100644
--- a/cc/surfaces/display.cc
+++ b/cc/surfaces/display.cc
@@ -42,15 +42,18 @@ Display::Display(SharedBitmapManager* bitmap_manager,
gpu_memory_buffer_manager_(gpu_memory_buffer_manager),
settings_(settings),
frame_sink_id_(frame_sink_id),
- begin_frame_source_(std::move(begin_frame_source)),
+ begin_frame_source_(
+ new DisplayBeginFrameSource(std::move(begin_frame_source))),
output_surface_(std::move(output_surface)),
scheduler_(std::move(scheduler)),
texture_mailbox_deleter_(std::move(texture_mailbox_deleter)) {
DCHECK(output_surface_);
- DCHECK_EQ(!scheduler_, !begin_frame_source_);
+ DCHECK_EQ(!scheduler_, !begin_frame_source_->GetTargetSource());
DCHECK(frame_sink_id_.is_valid());
- if (scheduler_)
+ if (scheduler_) {
scheduler_->SetClient(this);
+ scheduler_->SetBeginFrameSource(begin_frame_source_.get());
+ }
}
Display::~Display() {
@@ -58,8 +61,7 @@ Display::~Display() {
if (client_) {
if (auto* context = output_surface_->context_provider())
context->SetLostContextCallback(base::Closure());
- if (begin_frame_source_)
- surface_manager_->UnregisterBeginFrameSource(begin_frame_source_.get());
+ surface_manager_->UnregisterBeginFrameSource(begin_frame_source_.get());
surface_manager_->RemoveObserver(this);
}
if (aggregator_) {
@@ -82,10 +84,8 @@ void Display::Initialize(DisplayClient* client,
// This must be done in Initialize() so that the caller can delay this until
// they are ready to receive a BeginFrameSource.
- if (begin_frame_source_) {
- surface_manager_->RegisterBeginFrameSource(begin_frame_source_.get(),
- frame_sink_id_);
- }
+ surface_manager_->RegisterBeginFrameSource(begin_frame_source_.get(),
+ frame_sink_id_);
output_surface_->BindToClient(this);
InitializeRenderer();
@@ -407,4 +407,9 @@ void Display::ForceImmediateDrawAndSwapIfPossible() {
scheduler_->ForceImmediateSwapIfPossible();
}
+void Display::SwapBeginFrameSource(
+ std::unique_ptr<BeginFrameSource>* begin_frame_source) {
+ begin_frame_source_->SwapTargetSource(begin_frame_source);
+}
+
} // namespace cc
« no previous file with comments | « cc/surfaces/display.h ('k') | cc/surfaces/display_begin_frame_source.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698