| Index: src/core/SkCanvas.cpp
|
| diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
|
| index c10d390f56f61396fa2ddbb55d35ab70637f577c..8b88a038146c17b3c691ccbcf80c5ffa62422bfb 100644
|
| --- a/src/core/SkCanvas.cpp
|
| +++ b/src/core/SkCanvas.cpp
|
| @@ -2161,14 +2161,21 @@ void SkCanvas::onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y,
|
| }
|
| }
|
|
|
| + // We cannot filter in the looper as we normally do, because the paint is
|
| + // incomplete at this point (text-related attributes are embedded within blob run paints).
|
| + SkDrawFilter* drawFilter = fMCRec->fFilter;
|
| + fMCRec->fFilter = NULL;
|
| +
|
| LOOPER_BEGIN(paint, SkDrawFilter::kText_Type, NULL)
|
|
|
| while (iter.next()) {
|
| SkDeviceFilteredPaint dfp(iter.fDevice, looper.paint());
|
| - iter.fDevice->drawTextBlob(iter, blob, x, y, dfp.paint());
|
| + iter.fDevice->drawTextBlob(iter, blob, x, y, dfp.paint(), drawFilter);
|
| }
|
|
|
| LOOPER_END
|
| +
|
| + fMCRec->fFilter = drawFilter;
|
| }
|
|
|
| // These will become non-virtual, so they always call the (virtual) onDraw... method
|
|
|