Bug 1415225 - Small early-exit optimization. r?botond draft
authorKartikaya Gupta <kgupta@mozilla.com>
Thu, 09 Nov 2017 09:03:52 -0500
changeset 695605 0ed4a89995d882ea404f733c90f983ad14f4011b
parent 695604 fa60af083cf5f63faeb16b3d8d3c1c824da5b787
child 695606 29d71c563a79b5df56b1282d6f01c82e9d1ff7d2
push id88473
push userkgupta@mozilla.com
push dateThu, 09 Nov 2017 14:05:50 +0000
reviewersbotond
bugs1415225
milestone58.0a1
Bug 1415225 - Small early-exit optimization. r?botond MozReview-Commit-ID: A3UuqKKOsjA
layout/generic/nsFrame.cpp
layout/painting/nsDisplayList.h
--- 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; }