mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
8a2b69cc87
Previously our region code was just a simple y,x sorted list of non-intersecting rectangles. This can cause us to have simple regions represented in a complex unoptimizable way. Switching to pixman regions gives us a canonical region implementation. There are some cases when this can cause performance regressions. For example, with the old region code we end up with this region: http://people.mozilla.org/~jmuizelaar/region-pre.html which is represented like this: http://people.mozilla.org/~jmuizelaar/region-post.html with the new code. We call SimplifyOutward(4) on this. With old regions we can't simplify it so we end up taking the bounds and get 1 rect. With the new regions we have only 3 rects to start and so we do nothing. The difference between 3 rects and 1 rect cause D2D to do a PushLayer() instead of a ClipRect() and that seems to be the causes for the regression. --HG-- extra : rebase_source : 65e0d29d67b51a3780448eaecfde33dbcb6b99b1 |
||
---|---|---|
.. | ||
AppUnits.h | ||
gfxCore.h | ||
gfxCrashReporterUtils.cpp | ||
gfxCrashReporterUtils.h | ||
Makefile.in | ||
moz.build | ||
nsBoundingMetrics.h | ||
nsColor.cpp | ||
nsColor.h | ||
nsColorNameList.h | ||
nsColorNames.h | ||
nsCoord.h | ||
nsDeviceContext.cpp | ||
nsDeviceContext.h | ||
nsFont.cpp | ||
nsFont.h | ||
nsFontMetrics.cpp | ||
nsFontMetrics.h | ||
nsGfxCIID.h | ||
nsIFontEnumerator.idl | ||
nsIScriptableRegion.idl | ||
nsITheme.h | ||
nsMargin.h | ||
nsPoint.h | ||
nsRect.cpp | ||
nsRect.h | ||
nsRegion.cpp | ||
nsRegion.h | ||
nsRenderingContext.cpp | ||
nsRenderingContext.h | ||
nsScriptableRegion.cpp | ||
nsScriptableRegion.h | ||
nsSize.h | ||
nsThebesFontEnumerator.cpp | ||
nsThebesFontEnumerator.h | ||
nsThebesGfxFactory.cpp | ||
nsThemeConstants.h | ||
nsTransform2D.cpp | ||
nsTransform2D.h | ||
X11Util.cpp | ||
X11Util.h |