Bug 1340709 - Add profiler tracing markers for more phases of the refresh tick. r?mattwoodrow
This adds markers for FireScrollEvent, DispatchSynthMouseMove, ForwardTransaction, and NotifyDidPaint.
MozReview-Commit-ID: 9XahFGzIOls
--- a/gfx/layers/client/ClientLayerManager.cpp
+++ b/gfx/layers/client/ClientLayerManager.cpp
@@ -651,16 +651,17 @@ ClientLayerManager::StopFrameTimeRecordi
if (renderer) {
renderer->SendStopFrameTimeRecording(aStartIndex, &aFrameIntervals);
}
}
void
ClientLayerManager::ForwardTransaction(bool aScheduleComposite)
{
+ GeckoProfilerTracingRAII tracer("Paint", "ForwardTransaction");
TimeStamp start = TimeStamp::Now();
// Skip the synchronization for buffer since we also skip the painting during
// device-reset status.
if (!gfxPlatform::GetPlatform()->DidRenderingDeviceReset()) {
if (mForwarder->GetSyncObject() &&
mForwarder->GetSyncObject()->IsSyncObjectValid()) {
mForwarder->GetSyncObject()->FinalizeFrame();
--- a/layout/base/PresShell.cpp
+++ b/layout/base/PresShell.cpp
@@ -3693,16 +3693,17 @@ FlushLayoutRecursive(nsIDocument* aDocum
aDocument->FlushPendingNotifications(FlushType::Layout);
return true;
}
void
PresShell::DispatchSynthMouseMove(WidgetGUIEvent* aEvent,
bool aFlushOnHoverChange)
{
+ GeckoProfilerTracingRAII tracer("Paint", "DispatchSynthMouseMove");
RestyleManager* restyleManager = mPresContext->RestyleManager();
uint32_t hoverGenerationBefore =
restyleManager->GetHoverGeneration();
nsEventStatus status;
nsView* targetView = nsView::GetViewFor(aEvent->mWidget);
if (!targetView)
return;
targetView->GetViewManager()->DispatchEvent(aEvent, targetView, &status);
--- a/layout/base/nsRefreshDriver.cpp
+++ b/layout/base/nsRefreshDriver.cpp
@@ -2089,16 +2089,17 @@ nsRefreshDriver::Tick(int64_t aNowEpoch,
NS_ASSERTION(mInRefresh, "Still in refresh");
if (mPresContext->IsRoot() && XRE_IsContentProcess() && gfxPrefs::AlwaysPaint()) {
ScheduleViewManagerFlush();
}
if (notifyGC && nsContentUtils::XPConnect()) {
+ GeckoProfilerTracingRAII tracer("Paint", "NotifyDidPaint");
nsContentUtils::XPConnect()->NotifyDidPaint();
nsJSContext::NotifyDidPaint();
}
}
void
nsRefreshDriver::BeginRefreshingImages(RequestTable& aEntries,
mozilla::TimeStamp aDesired)
--- a/layout/generic/nsGfxScrollFrame.cpp
+++ b/layout/generic/nsGfxScrollFrame.cpp
@@ -4704,16 +4704,17 @@ ScrollFrameHelper::ScrollEvent::WillRefr
mDriver->RemoveRefreshObserver(this, FlushType::Layout);
mDriver = nullptr;
mHelper->FireScrollEvent();
}
void
ScrollFrameHelper::FireScrollEvent()
{
+ GeckoProfilerTracingRAII tracer("Paint", "FireScrollEvent");
MOZ_ASSERT(mScrollEvent);
mScrollEvent = nullptr;
ActiveLayerTracker::SetCurrentScrollHandlerFrame(mOuter);
WidgetGUIEvent event(true, eScroll, nullptr);
nsEventStatus status = nsEventStatus_eIgnore;
nsIContent* content = mOuter->GetContent();
nsPresContext* prescontext = mOuter->PresContext();