Bug 1084672. Call NotifyDidPaint from the refresh driver to ensure it gets called regardless of whether OMTC is used or not. r=mattwoodrow
authorRobert O'Callahan <robert@ocallahan.org>
Wed, 22 Oct 2014 14:26:17 +1300
changeset 214015 12a4c982313f8f8b2634f4d88e12e96c930c3206
parent 214014 5ccd5638a7b21be2c7eb4153c83adc48852c9bee
child 214016 3dc4a906df95b11308aeecfd2f427ea3eaf239d0
push id27771
push userryanvm@gmail.com
push dateWed, 05 Nov 2014 19:04:24 +0000
treeherdermozilla-central@305b4fecce99 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmattwoodrow
bugs1084672
milestone36.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1084672. Call NotifyDidPaint from the refresh driver to ensure it gets called regardless of whether OMTC is used or not. r=mattwoodrow
layout/base/nsPresShell.cpp
layout/base/nsRefreshDriver.cpp
--- a/layout/base/nsPresShell.cpp
+++ b/layout/base/nsPresShell.cpp
@@ -8798,20 +8798,16 @@ PresShell::DidPaintWindow()
   }
 
   nsRootPresContext* rootPresContext = mPresContext->GetRootPresContext();
   if (rootPresContext != mPresContext) {
     // This could be a popup's presshell. No point in notifying XPConnect
     // about compositing of popups.
     return;
   }
-
-  if (nsContentUtils::XPConnect()) {
-    nsContentUtils::XPConnect()->NotifyDidPaint();
-  }
 }
 
 bool
 PresShell::IsVisible()
 {
   if (!mViewManager)
     return false;
 
--- a/layout/base/nsRefreshDriver.cpp
+++ b/layout/base/nsRefreshDriver.cpp
@@ -1357,16 +1357,20 @@ nsRefreshDriver::Tick(int64_t aNowEpoch,
       printf_stderr("Ending ProcessPendingUpdates\n");
     }
 #endif
     for (uint32_t i = 0; i < profilingDocShells.Length(); i ++) {
       profilingDocShells[i]->AddProfileTimelineMarker("Paint",
                                                       TRACING_INTERVAL_END);
     }
     profiler_tracing("Paint", "DisplayList", TRACING_INTERVAL_END);
+
+    if (nsContentUtils::XPConnect()) {
+      nsContentUtils::XPConnect()->NotifyDidPaint();
+    }
   }
 
   for (uint32_t i = 0; i < mPostRefreshObservers.Length(); ++i) {
     mPostRefreshObservers[i]->DidRefresh();
   }
 
   NS_ASSERTION(mInRefresh, "Still in refresh");
 }