| Index: gm/textblobuseaftergpufree.cpp
 | 
| diff --git a/gm/textblobuseaftergpufree.cpp b/gm/textblobuseaftergpufree.cpp
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..127e4367d66caf0eaae17b52841198b4cf9ba848
 | 
| --- /dev/null
 | 
| +++ b/gm/textblobuseaftergpufree.cpp
 | 
| @@ -0,0 +1,73 @@
 | 
| +/*
 | 
| + * Copyright 2015 Google Inc.
 | 
| + *
 | 
| + * Use of this source code is governed by a BD-style license that can be
 | 
| + * found in the LICENSE file.
 | 
| + */
 | 
| +
 | 
| +#include "gm.h"
 | 
| +
 | 
| +#if SK_SUPPORT_GPU
 | 
| +
 | 
| +#include "SkCanvas.h"
 | 
| +#include "SkSurface.h"
 | 
| +#include "SkTextBlob.h"
 | 
| +
 | 
| +// This tests that we correctly regenerate textblobs after freeing all gpu resources crbug/491350
 | 
| +namespace skiagm {
 | 
| +class TextBlobUseAfterGpuFree : public GM {
 | 
| +public:
 | 
| +    TextBlobUseAfterGpuFree() { }
 | 
| +
 | 
| +protected:
 | 
| +    SkString onShortName() override {
 | 
| +        return SkString("textblobuseaftergpufree");
 | 
| +    }
 | 
| +
 | 
| +    SkISize onISize() override {
 | 
| +        return SkISize::Make(kWidth, kHeight);
 | 
| +    }
 | 
| +
 | 
| +    void onDraw(SkCanvas* canvas) override {
 | 
| +        // This GM exists to test a specific feature of the GPU backend.
 | 
| +        if (NULL == canvas->getGrContext()) {
 | 
| +            this->drawGpuOnlyMessage(canvas);
 | 
| +            return;
 | 
| +        }
 | 
| +
 | 
| +        const char text[] = "Hamburgefons";
 | 
| +
 | 
| +        SkPaint paint;
 | 
| +        sk_tool_utils::set_portable_typeface(&paint);
 | 
| +        paint.setTextSize(20);
 | 
| +
 | 
| +        SkTextBlobBuilder builder;
 | 
| +
 | 
| +        sk_tool_utils::add_to_text_blob(&builder, text, paint, 10, 10);
 | 
| +
 | 
| +        SkAutoTUnref<const SkTextBlob> blob(builder.build());
 | 
| +
 | 
| +        // draw textblob
 | 
| +        SkRect rect = SkRect::MakeLTRB(0.f, 0.f, SkIntToScalar(kWidth), kHeight / 2.f);
 | 
| +        SkPaint rectPaint;
 | 
| +        rectPaint.setColor(0xffffffff);
 | 
| +        canvas->drawRect(rect, rectPaint);
 | 
| +        canvas->drawTextBlob(blob.get(), 10, 50, paint);
 | 
| +
 | 
| +        // This text should look fine
 | 
| +        canvas->getGrContext()->freeGpuResources();
 | 
| +        canvas->drawTextBlob(blob.get(), 10, 150, paint);
 | 
| +    }
 | 
| +
 | 
| +private:
 | 
| +    static const int kWidth = 200;
 | 
| +    static const int kHeight = 200;
 | 
| +
 | 
| +    typedef GM INHERITED;
 | 
| +};
 | 
| +
 | 
| +//////////////////////////////////////////////////////////////////////////////
 | 
| +
 | 
| +DEF_GM( return SkNEW(TextBlobUseAfterGpuFree); )
 | 
| +}
 | 
| +#endif
 | 
| 
 |