Observe surface LCD settings in SkBaseDevice::drawTextBlob()
We're currently overwriting the paint LCD text flag based on the the run
font data => this cancels any LCD filtering we might have performed
higher up the stack.
BUG=423362
R=reed@google.com
Review URL: https://codereview.chromium.org/718913003
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index 82d4816..6cd6dda 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -2055,12 +2055,10 @@
class SkDeviceFilteredPaint {
public:
SkDeviceFilteredPaint(SkBaseDevice* device, const SkPaint& paint) {
- if (device->shouldDisableLCD(paint)) {
- uint32_t flags = paint.getFlags();
- flags &= ~SkPaint::kLCDRenderText_Flag;
- flags |= SkPaint::kGenA8FromLCD_Flag;
+ uint32_t filteredFlags = device->filterTextFlags(paint);
+ if (filteredFlags != paint.getFlags()) {
SkPaint* newPaint = fLazy.set(paint);
- newPaint->setFlags(flags);
+ newPaint->setFlags(filteredFlags);
fPaint = newPaint;
} else {
fPaint = &paint;