Backed out changeset d84ed6588b23 (bug 1255068) for causing android crashes/assertions
authorCarsten "Tomcat" Book <cbook@mozilla.com>
Thu, 24 Mar 2016 14:21:49 +0100
changeset 323602 48fed14c66390d481f023fb9681d333c2c96a677
parent 323601 ede02634231edde62f7513e79114c948d59a1e55
child 323603 f3c679ed9bce3f5d5968e178c330635380ca37e3
push id5913
push userjlund@mozilla.com
push dateMon, 25 Apr 2016 16:57:49 +0000
treeherdermozilla-beta@dcaf0a6fa115 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1255068
milestone47.0a2
backs outd84ed6588b2365332c9fb6a42c58fefcffd65683
Backed out changeset d84ed6588b23 (bug 1255068) for causing android crashes/assertions
layout/generic/nsFrame.cpp
--- a/layout/generic/nsFrame.cpp
+++ b/layout/generic/nsFrame.cpp
@@ -5270,67 +5270,28 @@ nsIFrame::InvalidateFrameWithRect(const 
     AddStateBits(NS_FRAME_HAS_INVALID_RECT);
   }
 
   *rect = rect->Union(aRect);
 }
 
 /*static*/ uint8_t nsIFrame::sLayerIsPrerenderedDataKey;
 
-static bool
-DoesLayerHaveOutOfDateFrameMetrics(Layer* aLayer)
-{
-  for (uint32_t i = 0; i < aLayer->GetFrameMetricsCount(); i++) {
-    const FrameMetrics& metrics = aLayer->GetFrameMetrics(i);
-    nsIScrollableFrame* scrollableFrame =
-      nsLayoutUtils::FindScrollableFrameFor(metrics.GetScrollId());
-    if (!scrollableFrame) {
-      // This shouldn't happen, so let's do the safe thing and trigger a full
-      // paint if it does.
-      return true;
-    }
-    nsPoint scrollPosition = scrollableFrame->GetScrollPosition();
-    if (metrics.GetScrollOffset() != CSSPoint::FromAppUnits(scrollPosition)) {
-      return true;
-    }
-  }
-  return false;
-}
-
-static bool
-DoesLayerOrAncestorsHaveOutOfDateFrameMetrics(Layer* aLayer)
-{
-  for (Layer* layer = aLayer; layer; layer = layer->GetParent()) {
-    if (DoesLayerHaveOutOfDateFrameMetrics(layer)) {
-      return true;
-    }
-  }
-  return false;
-}
-
 bool
 nsIFrame::TryUpdateTransformOnly(Layer** aLayerResult)
 {
   Layer* layer = FrameLayerBuilder::GetDedicatedLayer(
     this, nsDisplayItem::TYPE_TRANSFORM);
   if (!layer || !layer->HasUserData(LayerIsPrerenderedDataKey())) {
     // If this layer isn't prerendered or we clip composites to our OS
     // window, then we can't correctly optimize to an empty
     // transaction in general.
     return false;
   }
 
-  if (DoesLayerOrAncestorsHaveOutOfDateFrameMetrics(layer)) {
-    // At least one scroll frame that can affect the position of this layer
-    // has changed its scroll offset since the last paint. Schedule a full
-    // paint to make sure that this layer's transform and all the frame
-    // metrics that affect it are in sync.
-    return false;
-  }
-
   gfx::Matrix4x4 transform3d;
   if (!nsLayoutUtils::GetLayerTransformForFrame(this, &transform3d)) {
     // We're not able to compute a layer transform that we know would
     // be used at the next layers transaction, so we can't only update
     // the transform and will need to schedule an invalidating paint.
     return false;
   }
   gfx::Matrix transform;