| Index: src/core/SkCanvas.cpp
|
| diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
|
| index 80ff34d417e3a08f08fcda4e41e8c1d52e2617d5..bad05151889a6d385a705b12c5ced048fb8226e2 100644
|
| --- a/src/core/SkCanvas.cpp
|
| +++ b/src/core/SkCanvas.cpp
|
| @@ -2372,7 +2372,26 @@ bool SkCanvas::canDrawBitmapAsSprite(SkScalar x, SkScalar y, int w, int h, const
|
| return ir.contains(fMCRec->fRasterClip.getBounds());
|
| }
|
|
|
| +class TestPinImage {
|
| +public:
|
| + TestPinImage(SkCanvas* canvas, const SkImage* image) {
|
| + if ((fCtx = canvas->getGrContext()) != nullptr) {
|
| + fImage = image;
|
| + image->pinAsTexture(fCtx);
|
| + }
|
| + }
|
| + ~TestPinImage() {
|
| + if (fImage) {
|
| + fImage->unpinAsTexture(fCtx);
|
| + }
|
| + }
|
| + GrContext* fCtx;
|
| + const SkImage* fImage = nullptr;
|
| +};
|
| +
|
| void SkCanvas::onDrawImage(const SkImage* image, SkScalar x, SkScalar y, const SkPaint* paint) {
|
| + TestPinImage test(this, image);
|
| +
|
| TRACE_EVENT0("disabled-by-default-skia", "SkCanvas::drawImage()");
|
| SkRect bounds = SkRect::MakeXYWH(x, y,
|
| SkIntToScalar(image->width()), SkIntToScalar(image->height()));
|
| @@ -2444,6 +2463,8 @@ void SkCanvas::onDrawImageLattice(const SkImage* image, const Lattice& lattice,
|
|
|
| void SkCanvas::onDrawImageRect(const SkImage* image, const SkRect* src, const SkRect& dst,
|
| const SkPaint* paint, SrcRectConstraint constraint) {
|
| + TestPinImage test(this, image);
|
| +
|
| TRACE_EVENT0("disabled-by-default-skia", "SkCanvas::drawImageRect()");
|
| if (nullptr == paint || paint->canComputeFastBounds()) {
|
| SkRect storage = dst;
|
|
|