Bug 1008301 - Don't invalidate when the visible region of a layer changes. r=roc

This commit is contained in:
Markus Stange 2014-05-12 21:37:20 +02:00
parent 0787643a71
commit d0079de4a9
4 changed files with 116 additions and 7 deletions

View File

@ -166,13 +166,6 @@ struct LayerPropertiesBase : public LayerProperties
}
}
nsIntRegion visible;
visible.Xor(mVisibleRegion, mLayer->GetVisibleRegion());
if (!visible.IsEmpty()) {
aGeometryChanged = true;
}
AddTransformedRegion(result, visible, mTransform);
AddRegion(result, ComputeChangeInternal(aCallback, aGeometryChanged));
AddTransformedRegion(result, mLayer->GetInvalidRegion(), mTransform);

View File

@ -0,0 +1,56 @@
<!DOCTYPE html>
<html lang="en" class="reftest-wait">
<meta charset="utf-8">
<title>Scrolling the horizontal bar away shouldn't invalidate the green rectangle</title>
<style>
.wrapper {
transform: translateY(1px);
}
.content {
box-sizing: border-box;
border: 1px solid rgba(0, 0, 0, 0.2);
}
.first {
height: 20px;
}
.second {
margin-left: auto;
width: 20px;
height: 200px;
}
.reftest-no-paint {
margin: -150px 100px 0;
height: 100px;
border-color: lime;
}
body {
margin: 0;
padding: 50px;
height: 3000px;
}
</style>
<div class="wrapper">
<div class="first content"></div>
<div class="second content"></div>
</div>
<div class="reftest-no-paint content"></div>
<script>
function doTest() {
document.documentElement.scrollTop = 100;
document.documentElement.removeAttribute("class");
}
document.addEventListener("MozReftestInvalidate", doTest, false);
</script>

View File

@ -0,0 +1,58 @@
<!DOCTYPE html>
<html lang="en" class="reftest-wait">
<meta charset="utf-8">
<title>Scrolling the horizontal bar away shouldn't invalidate the green rectangle</title>
<style>
.wrapper {
transform: translateY(1px);
}
.content {
box-sizing: border-box;
border: 1px solid rgba(0, 0, 0, 0.2);
}
.first {
height: 20px;
}
.second {
margin-left: auto;
width: 20px;
height: 200px;
}
.reftest-no-paint {
margin: -150px 100px 0;
height: 100px;
border-color: lime;
}
body {
margin: 0;
padding: 50px;
height: 3000px;
}
</style>
<div class="wrapper">
<div class="wrapper">
<div class="first content"></div>
<div class="second content"></div>
</div>
</div>
<div class="reftest-no-paint content"></div>
<script>
function doTest() {
document.documentElement.scrollTop = 100;
document.documentElement.removeAttribute("class");
}
document.addEventListener("MozReftestInvalidate", doTest, false);
</script>

View File

@ -40,3 +40,5 @@ pref(layout.animated-image-layers.enabled,true) == test-animated-image-layers-ba
== filter-userspace-offset.svg?offsetContainer=rect&filter=matrix-fillPaint-userSpace-at100 filter-userspace-offset.svg
== scroll-inactive-layers.html scroll-inactive-layers.html
== scroll-inactive-layers-2.html scroll-inactive-layers-2.html
!= inactive-layertree-visible-region-1.html about:blank
!= inactive-layertree-visible-region-2.html about:blank