Bug 1386643 - Don't respect font smoothing background colors in pushed layers. r=jrmuizel

This is an imperfect workaround. Ideally we'd want layout to determine the
correct color here: If the pushed layer will end up on something mostly opaque
in the outer layer, the font smoothing background color should be transparent
(or even a color that approximates that opaque content), and if the pushed
layer will end up on transparency in the outer layer, the appropriate font
smoothing background color for the outer layer should be used when drawing text
in the pushed layer.

This workaround causes us to lose subpixel AA in background tabs that have the
overflow mask applied to them. For those, using the font smoothing background
color in the pushed layer was the right choice.

MozReview-Commit-ID: FPufh04EVp3

--HG--
extra : rebase_source : 7a6cb73255bdb7f1b8aba7df60ebe61171275da4
This commit is contained in:
Markus Stange 2017-08-02 17:26:02 -04:00
parent 4e2c6b0054
commit b7d6066c45

View File

@ -1261,7 +1261,13 @@ DrawTargetSkia::FillGlyphsWithCG(ScaledFont *aFont,
return false;
}
SetFontSmoothingBackgroundColor(cgContext, mColorSpace, aRenderingOptions);
if (mPushedLayers.empty()) {
// Respect the font smoothing background color, but only if no layer is
// currently pushed, because this color usually describes what's under this
// DrawTarget, and not what's within this DrawTarget under the currently
// pushed layer.
SetFontSmoothingBackgroundColor(cgContext, mColorSpace, aRenderingOptions);
}
SetFontColor(cgContext, mColorSpace, aPattern);
ScaledFontMac* macFont = static_cast<ScaledFontMac*>(aFont);