Bug 1415225 - Small early-exit optimization. r?botond
MozReview-Commit-ID: A3UuqKKOsjA
--- a/layout/generic/nsFrame.cpp
+++ b/layout/generic/nsFrame.cpp
@@ -2523,16 +2523,20 @@ public:
~AutoSaveRestoreContainsBlendMode() {
mBuilder.SetContainsBlendMode(mSavedContainsBlendMode);
}
};
static void
CheckForApzAwareEventHandlers(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame)
{
+ if (aBuilder->GetAncestorHasApzAwareEventHandler()) {
+ return;
+ }
+
nsIContent* content = aFrame->GetContent();
if (!content) {
return;
}
if (content->IsNodeApzAware()) {
aBuilder->SetAncestorHasApzAwareEventHandler(true);
}
--- a/layout/painting/nsDisplayList.h
+++ b/layout/painting/nsDisplayList.h
@@ -696,17 +696,17 @@ public:
}
bool IsBuildingLayerEventRegions();
static bool LayerEventRegionsEnabled();
bool IsInsidePointerEventsNoneDoc()
{
return CurrentPresShellState()->mInsidePointerEventsNoneDoc;
}
- bool GetAncestorHasApzAwareEventHandler() { return mAncestorHasApzAwareEventHandler; }
+ bool GetAncestorHasApzAwareEventHandler() const { return mAncestorHasApzAwareEventHandler; }
void SetAncestorHasApzAwareEventHandler(bool aValue)
{
mAncestorHasApzAwareEventHandler = aValue;
}
bool HaveScrollableDisplayPort() const { return mHaveScrollableDisplayPort; }
void SetHaveScrollableDisplayPort() { mHaveScrollableDisplayPort = true; }
void ClearHaveScrollableDisplayPort() { mHaveScrollableDisplayPort = false; }