Bug 656875 - Use the transformed dirty rectngle when building display list items for stacking context; r=roc
authorEhsan Akhgari <ehsan@mozilla.com>
Mon, 16 May 2011 13:27:24 -0400
changeset 78043 c6b76256ebb2a92188f39f5ea52a70302816e417
parent 78042 32676bb1968eb61939bc55116e113ac7be684a7c
child 78044 38d2ef7f7e47e01837146637bd8d16e25985ce4b
push id2360
push usereakhgari@mozilla.com
push dateMon, 03 Oct 2011 23:36:36 +0000
treeherdermozilla-inbound@c6b76256ebb2 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersroc
bugs656875
milestone10.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 656875 - Use the transformed dirty rectngle when building display list items for stacking context; r=roc
layout/generic/nsFrame.cpp
layout/reftests/bugs/656875.html
layout/reftests/bugs/reftest.list
--- a/layout/generic/nsFrame.cpp
+++ b/layout/generic/nsFrame.cpp
@@ -1640,17 +1640,17 @@ nsIFrame::BuildDisplayListForStackingCon
 
   bool usingSVGEffects = nsSVGIntegrationUtils::UsingEffectsForFrame(this);
   if (usingSVGEffects) {
     dirtyRect =
       nsSVGIntegrationUtils::GetRequiredSourceForInvalidArea(this, dirtyRect);
   }
 
   // Mark the display list items for absolutely positioned children
-  MarkAbsoluteFramesForDisplayList(aBuilder, aDirtyRect);
+  MarkAbsoluteFramesForDisplayList(aBuilder, dirtyRect);
 
   nsDisplayListCollection set;
   nsresult rv;
   {    
     nsDisplayListBuilder::AutoIsRootSetter rootSetter(aBuilder, PR_TRUE);
     nsDisplayListBuilder::AutoInTransformSetter
       inTransformSetter(aBuilder, inTransform);
     rv = BuildDisplayList(aBuilder, dirtyRect, set);
new file mode 100644
--- /dev/null
+++ b/layout/reftests/bugs/656875.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+
+<div>test</div>
+
+<style>
+  body {
+      width: 100px; height: 300px;
+      position: absolute;
+      -moz-transform: scale(0.5);
+  }
+  div { position: absolute; }
+</style>
--- a/layout/reftests/bugs/reftest.list
+++ b/layout/reftests/bugs/reftest.list
@@ -1650,16 +1650,17 @@ random == 637597-1.html 637597-1-ref.htm
 == 652301-1b.html 652301-1-ref.html
 == 645768-1.html 645768-1-ref.html
 fails-if(layersGPUAccelerated&&cocoaWidget) == 650228-1.html 650228-1-ref.html # Quartz alpha blending doesn't match GL alpha blending
 == 653930-1.html 653930-1-ref.html
 HTTP(..) == 654057-1.html 654057-1-ref.html
 fails-if(layersGPUAccelerated&&cocoaWidget) == 654950-1.html 654950-1-ref.html # Quartz alpha blending doesn't match GL alpha blending
 == 652775-1.html 652775-1-ref.html
 == 655549-1.html 655549-1-ref.html
+!= 656875.html about:blank
 == 658952.html 658952-ref.html
 == 664127-1.xul 664127-1-ref.xul
 == 660682-1.html 660682-1-ref.html
 == 665597-1.html 665597-1-ref.html
 != 669015-1.xul 669015-1-notref.xul
 == 668319-1.xul about:blank
 == 670442-1.html 670442-1-ref.html
 == 670467-1.html 670467-1-ref.html