6256bcafbdf27f4b8826f13deb082f76aaf3c14c: Bug 637852. Part 22: Detect when the contents of a ThebesLayer have shifted by a subpixel amount and repaint the entire layer when that happens. r=tnikkel
Robert O'Callahan <robert@ocallahan.org> - Thu, 23 Jun 2011 00:11:28 +1200 - rev 71811
Bug 637852. Part 22: Detect when the contents of a ThebesLayer have shifted by a subpixel amount and repaint the entire layer when that happens. r=tnikkel This fixes artifacts when we're scrolling inside scaled content, and includes a test for that (which fails without this code change).
3d7fda340878b309996c11c7cc0c94f1ac7b11aa: Bug 637852. Part 21: Skip invalidation if aRegionToInvalidateIsEmpty (note that ScaleRoundOut on an empty bounds rect can return a non-empty rect). r=tnikkel
Robert O'Callahan <robert@ocallahan.org> - Thu, 23 Jun 2011 00:11:28 +1200 - rev 71810
Bug 637852. Part 21: Skip invalidation if aRegionToInvalidateIsEmpty (note that ScaleRoundOut on an empty bounds rect can return a non-empty rect). r=tnikkel
c9f644aa2fa58dba7e98639e2df87742be54c222: Bug 637852. Part 20: Allow fast scrolling within transformed content. r=tnikkel
Robert O'Callahan <robert@ocallahan.org> - Thu, 23 Jun 2011 00:11:28 +1200 - rev 71809
Bug 637852. Part 20: Allow fast scrolling within transformed content. r=tnikkel This lets us easily test scrolling with non-identity resolution.
e96e2e5829cd244abcffa8ca6f95807e523eb234: Bug 637852. Part 19: Test (from bug 633344)
Robert O'Callahan <robert@ocallahan.org> - Thu, 23 Jun 2011 00:11:28 +1200 - rev 71808
Bug 637852. Part 19: Test (from bug 633344)
4c323a5e40c2a43d2a204bf5c9a34c1a229a163c: Bug 637852. Part 18: Support computing the "residual transform" for a ThebesLayer --- the difference between its snapped transform and the ideal transform --- and use it to align ThebesLayer drawing for transforms that aren't changing. r=tnikkel
Robert O'Callahan <robert@ocallahan.org> - Thu, 23 Jun 2011 00:11:28 +1200 - rev 71807
Bug 637852. Part 18: Support computing the "residual transform" for a ThebesLayer --- the difference between its snapped transform and the ideal transform --- and use it to align ThebesLayer drawing for transforms that aren't changing. r=tnikkel This fixes bug 637597 and probably other bugs.
500265c61f37887aa038076384a94717bdb65737: Bug 637852. Part 17: Tighten up AreLayersMarkedActive so we track exactly what properties are changing. Also, clamp resolution to power-of-2 only if the frame's transform has a scale. r=tnikkel
Robert O'Callahan <robert@ocallahan.org> - Thu, 23 Jun 2011 00:11:28 +1200 - rev 71806
Bug 637852. Part 17: Tighten up AreLayersMarkedActive so we track exactly what properties are changing. Also, clamp resolution to power-of-2 only if the frame's transform has a scale. r=tnikkel This lets us avoid clamping the scale in more situations. We should only clamp the scale when we think the scale is changing due to a changing transform --- the goal of clamping is to not have to redraw the content too often when the content is zooming in or out.
c6c5f217fedffde4c5f37dd3832bb9aee7e2d783: Bug 637852. Part 16: Mark newly-passing reftests.
Robert O'Callahan <robert@ocallahan.org> - Thu, 23 Jun 2011 00:11:28 +1200 - rev 71805
Bug 637852. Part 16: Mark newly-passing reftests. Various tests that used to fail on Android now pass. One test that used to fail on Mac passes now too.
9ae31ef1ae05802ac28a5d800b262b5926c1a143: Bug 637852. Part 15: Don't round mOuterRect/mInnerRect if there's a scale factor in the current transform. r=joe
Robert O'Callahan <robert@ocallahan.org> - Thu, 23 Jun 2011 00:11:28 +1200 - rev 71804
Bug 637852. Part 15: Don't round mOuterRect/mInnerRect if there's a scale factor in the current transform. r=joe This avoids losing information when we're drawing into a high-resolution ThebesLayer. It works well with the previous patch; for identity scale, this rounding of the inner/outer rects ensures pixel alignment of the edges, but with non-identity scale the rectangle snapping ensures pixel alignment of the edges. This fixes reftest failures.
9c05bcab628fb6f0aeea60612c32e77ecc68f2fd: Bug 637852. Part 14: Try to use snappable rects to draw solid borders instead of using stroke, when a scaling transform is present. r=joe
Robert O'Callahan <robert@ocallahan.org> - Thu, 23 Jun 2011 00:11:28 +1200 - rev 71803
Bug 637852. Part 14: Try to use snappable rects to draw solid borders instead of using stroke, when a scaling transform is present. r=joe The goal here is to avoid antialiased border edges when drawing into high-resolution ThebesLayers. This fixes test failures.
2c7a42271f31aba0507fbec85a6622dba44f45a3: Bug 637852. Part 13: Allow snapping of text baselines to occur when there's a scale in the current transform. r=tnikkel
Robert O'Callahan <robert@ocallahan.org> - Thu, 23 Jun 2011 00:11:28 +1200 - rev 71802
Bug 637852. Part 13: Allow snapping of text baselines to occur when there's a scale in the current transform. r=tnikkel This allows baselines to be snapped properly when drawing into high-resolution ThebesLayers.
e552be420a02acc127554b582f7f6c062418965c: Bug 637852. Part 12: Dump layer trees and display lists to stdout instead of stderr so that they stay in order with window.dump() and other output. r=tnikkel
Robert O'Callahan <robert@ocallahan.org> - Thu, 23 Jun 2011 00:11:28 +1200 - rev 71801
Bug 637852. Part 12: Dump layer trees and display lists to stdout instead of stderr so that they stay in order with window.dump() and other output. r=tnikkel
a63a96b9571e572d0f0ca4272f6c48a9cb3a35c6: Bug 637852. Part 11: Remove ExtendForScaling from nsRect and nsRegion. r=joe
Robert O'Callahan <robert@ocallahan.org> - Thu, 23 Jun 2011 00:11:28 +1200 - rev 71800
Bug 637852. Part 11: Remove ExtendForScaling from nsRect and nsRegion. r=joe This is good because the semantics of this method always sucked.
5b2a58c9c279d1a6e27c8fba6cb24c931063dcf5: Bug 637852. Part 10: Remove mX/YResolution from ThebesLayer. r=joe
Robert O'Callahan <robert@ocallahan.org> - Thu, 23 Jun 2011 00:11:28 +1200 - rev 71799
Bug 637852. Part 10: Remove mX/YResolution from ThebesLayer. r=joe These are the last vestiges of Layer-based resolution API.
123d2c2f626066e8b5d393ea13da451e09594ea3: Bug 637852. Part 9: Remove resolution support from BasicLayers, ShadowLayers and GL layers. r=mattwoodrow
Robert O'Callahan <robert@ocallahan.org> - Thu, 23 Jun 2011 00:11:28 +1200 - rev 71798
Bug 637852. Part 9: Remove resolution support from BasicLayers, ShadowLayers and GL layers. r=mattwoodrow This is not needed anymore.
602d13dcab537ff844d20e9698658619d35f24fa: Bug 637852. Part 8: Remove resolution support from D3D9 layers. r=mattwoodrow
Robert O'Callahan <robert@ocallahan.org> - Thu, 23 Jun 2011 00:11:27 +1200 - rev 71797
Bug 637852. Part 8: Remove resolution support from D3D9 layers. r=mattwoodrow Layer-system resolution support is no longer needed.
198d6364abb9747d612f4c20e244fe02e49a1e77: Bug 637852. Part 7: Remove resolution support from D3D10 layers. r=mattwoodrow
Robert O'Callahan <robert@ocallahan.org> - Thu, 23 Jun 2011 00:11:27 +1200 - rev 71796
Bug 637852. Part 7: Remove resolution support from D3D10 layers. r=mattwoodrow Layer-system resolution support is no longer needed.
45b7622bc948e52af00b993d08fb2a5a98471f62: Bug 637852. Part 6: Implement resolution scaling in FrameLayerBuilder. r=tnikkel
Robert O'Callahan <robert@ocallahan.org> - Thu, 23 Jun 2011 00:11:27 +1200 - rev 71795
Bug 637852. Part 6: Implement resolution scaling in FrameLayerBuilder. r=tnikkel FrameLayerBuilder::BuildContainerLayerFor takes responsibility for resolution scaling. The ContainerParameters passed in are added to any transform requested. Then we extract the scale part of the transform, round the scale up to the nearest power of two if the transform may be actively animated (so we don't have to redraw layer contents constantly), pass that scale down to be applied by each child and set the residual transform on the ContainerLayer. For child layers built via BuildLayer, we just pass the requested scale factor in via the ContainerParameters. If the returned layer is a ContainerLayer then BuildLayer is guaranteed to have already done necessary scaling. If the returned layer is not a ContainerLayer then we apply the scale ourselves by adding the scale to the child layer's transform. For child ThebesLayers containing non-layer display items, we scale the drawing of those display items so that the child ThebesLayers are simply larger or smaller (larger or smaller visible regions). We have to scale all visible rects, clip rects etc that are in the coordinates of ThebesLayers or the parent ContainerLayer. To keep things simple we do this whenever we convert from appunits to integer layer coordinates. When a ThebesLayer's resolution changes we need to rerender the whole thing. nsDisplayList::PaintForFrame needs to respect the presshell's resolution setting. We do that by building a layer tree with a ContainerParameters requesting a scale up by the presshell resolution; once that layer tree is built, we adjust the root layer transform to scale back down by the resolution.
31c47102a6fc579e2bb5eda089e9c662e8b00c04: Bug 637852: Part 5: Create ContainerParameters structure to carry resolution scale factors through layer creation. r=tnikkel
Robert O'Callahan <robert@ocallahan.org> - Thu, 23 Jun 2011 00:11:27 +1200 - rev 71794
Bug 637852: Part 5: Create ContainerParameters structure to carry resolution scale factors through layer creation. r=tnikkel This patch shouldn't change any behavior. It just passes the ContainerParameters around, which will contain scale factors that should have been applied when BuildLayer returns a ContainerLayer. This patch also adds an aTransform parameter to BuildContainerLayerFor, which nsDisplayTransform uses to set the transform for the ContainerLayer. This way BuildContainerLayerFor knows what the container's transform is going to be before constructing the children, which in the next patch will let us construct the children with the right resolution.
1da2c78a1a72954bcddcb0eb62be930f48802dcd: Bug 637852. Part 4: Add nsRegion::ScaleInverseRoundOut and nsRegion::ScaleToOutsidePixels APIs. r=joe
Robert O'Callahan <robert@ocallahan.org> - Thu, 23 Jun 2011 00:11:27 +1200 - rev 71793
Bug 637852. Part 4: Add nsRegion::ScaleInverseRoundOut and nsRegion::ScaleToOutsidePixels APIs. r=joe
b53df216be6181b6488332f66fa0954a29c019a8: Bug 637852. Part 3: Add nsPoint::ScaleToNearestPixels, nsRect::ScaleToNearestPixels, nsRect::ScaleToInsidePixels and nsRect::ScaleToOutsidePixels APIs. r=joe
Robert O'Callahan <robert@ocallahan.org> - Thu, 23 Jun 2011 00:11:27 +1200 - rev 71792
Bug 637852. Part 3: Add nsPoint::ScaleToNearestPixels, nsRect::ScaleToNearestPixels, nsRect::ScaleToInsidePixels and nsRect::ScaleToOutsidePixels APIs. r=joe
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -20 +20 +50 +100 +300 +1000 +3000 +10000 +30000 tip