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

Unified Diff: content/browser/android/in_process/synchronous_compositor_impl.cc

Issue 1127943002: SyncCompositor wait for client before registration (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 months 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 | « content/browser/android/in_process/synchronous_compositor_impl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/android/in_process/synchronous_compositor_impl.cc
diff --git a/content/browser/android/in_process/synchronous_compositor_impl.cc b/content/browser/android/in_process/synchronous_compositor_impl.cc
index f8701c1a00af71945d2af9cb96164ffda94dc0ef..823a89738238014ede7b229ec232e8f3f4ec39b2 100644
--- a/content/browser/android/in_process/synchronous_compositor_impl.cc
+++ b/content/browser/android/in_process/synchronous_compositor_impl.cc
@@ -78,14 +78,9 @@ SynchronousCompositorImpl::SynchronousCompositorImpl(WebContents* contents)
weak_ptr_factory_(this) {
DCHECK(contents);
DCHECK_NE(routing_id_, MSG_ROUTING_NONE);
- SynchronousCompositorRegistry::GetInstance()->RegisterCompositor(routing_id_,
- this);
}
SynchronousCompositorImpl::~SynchronousCompositorImpl() {
- SynchronousCompositorRegistry::GetInstance()->UnregisterCompositor(
- routing_id_, this);
-
DCHECK(!output_surface_);
DCHECK(!begin_frame_source_);
DCHECK(!input_handler_);
@@ -94,7 +89,22 @@ SynchronousCompositorImpl::~SynchronousCompositorImpl() {
void SynchronousCompositorImpl::SetClient(
SynchronousCompositorClient* compositor_client) {
DCHECK(CalledOnValidThread());
+ DCHECK_IMPLIES(compositor_client, !compositor_client_);
+ DCHECK_IMPLIES(!compositor_client, compositor_client_);
hush (inactive) 2015/05/06 21:57:49 I'm wondering if the above 2 lines means: DCHECK_E
boliu 2015/05/06 22:02:49 Umm...yes, yes it does. DCHECK_IMPLIES is clearer
+
+ if (!compositor_client) {
+ SynchronousCompositorRegistry::GetInstance()->UnregisterCompositor(
+ routing_id_, this);
+ }
+
compositor_client_ = compositor_client;
+
+ // SetClient is essentially the constructor and destructor of
+ // SynchronousCompositorImpl.
+ if (compositor_client_) {
+ SynchronousCompositorRegistry::GetInstance()->RegisterCompositor(
+ routing_id_, this);
+ }
}
// static
@@ -139,21 +149,14 @@ void SynchronousCompositorImpl::DidInitializeRendererObjects(
void SynchronousCompositorImpl::DidDestroyRendererObjects() {
DCHECK(output_surface_);
DCHECK(begin_frame_source_);
+ DCHECK(compositor_client_);
begin_frame_source_->SetCompositor(nullptr);
output_surface_->SetCompositor(nullptr);
- if (compositor_client_)
- compositor_client_->DidDestroyCompositor(this);
- compositor_client_ = nullptr;
+ SetInputHandler(nullptr);
hush (inactive) 2015/05/06 21:57:49 why pulling this line up here? I guess no big deal
boliu 2015/05/06 22:02:49 It also does SetRootLayerScrollOffsetDelegate(NULL
+ compositor_client_->DidDestroyCompositor(this);
output_surface_ = nullptr;
begin_frame_source_ = nullptr;
- SetInputHandler(nullptr);
-}
-
-void SynchronousCompositorImpl::NotifyDidDestroyCompositorToClient() {
hush (inactive) 2015/05/06 21:57:49 there was no code calling this function before you
boliu 2015/05/06 22:02:49 Right. Should have removed this when I added the r
- if (compositor_client_)
- compositor_client_->DidDestroyCompositor(this);
- compositor_client_ = nullptr;
}
scoped_ptr<cc::CompositorFrame> SynchronousCompositorImpl::DemandDrawHw(
@@ -277,11 +280,10 @@ void SynchronousCompositorImpl::SetInputHandler(
void SynchronousCompositorImpl::DidOverscroll(
const DidOverscrollParams& params) {
- if (compositor_client_) {
- compositor_client_->DidOverscroll(params.accumulated_overscroll,
- params.latest_overscroll_delta,
- params.current_fling_velocity);
- }
+ DCHECK(compositor_client_);
+ compositor_client_->DidOverscroll(params.accumulated_overscroll,
+ params.latest_overscroll_delta,
+ params.current_fling_velocity);
}
void SynchronousCompositorImpl::DidStopFlinging() {
@@ -310,26 +312,23 @@ void SynchronousCompositorImpl::DeliverMessages() {
}
void SynchronousCompositorImpl::DidActivatePendingTree() {
- if (compositor_client_)
- compositor_client_->DidUpdateContent();
+ DCHECK(compositor_client_);
+ compositor_client_->DidUpdateContent();
}
gfx::ScrollOffset SynchronousCompositorImpl::GetTotalScrollOffset() {
DCHECK(CalledOnValidThread());
- if (compositor_client_) {
- // TODO(miletus): Make GetTotalRootLayerScrollOffset return
- // ScrollOffset. crbug.com/414283.
- return gfx::ScrollOffset(
- compositor_client_->GetTotalRootLayerScrollOffset());
- }
- return gfx::ScrollOffset();
+ DCHECK(compositor_client_);
+ // TODO(miletus): Make GetTotalRootLayerScrollOffset return
+ // ScrollOffset. crbug.com/414283.
+ return gfx::ScrollOffset(
+ compositor_client_->GetTotalRootLayerScrollOffset());
}
bool SynchronousCompositorImpl::IsExternalFlingActive() const {
DCHECK(CalledOnValidThread());
- if (compositor_client_)
- return compositor_client_->IsExternalFlingActive();
- return false;
+ DCHECK(compositor_client_);
+ return compositor_client_->IsExternalFlingActive();
}
void SynchronousCompositorImpl::UpdateRootLayerState(
@@ -340,8 +339,7 @@ void SynchronousCompositorImpl::UpdateRootLayerState(
float min_page_scale_factor,
float max_page_scale_factor) {
DCHECK(CalledOnValidThread());
- if (!compositor_client_)
- return;
+ DCHECK(compositor_client_);
// TODO(miletus): Pass in ScrollOffset. crbug.com/414283.
compositor_client_->UpdateRootLayerState(
« no previous file with comments | « content/browser/android/in_process/synchronous_compositor_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698