| Index: src/core/SkBitmapProvider.h
 | 
| diff --git a/src/core/SkBitmapProvider.h b/src/core/SkBitmapProvider.h
 | 
| index 9901c0fc1a054ed9af43dfc77b22d1bed2eac1e3..2080104b8792b3149af2b790f3035093e391abd1 100644
 | 
| --- a/src/core/SkBitmapProvider.h
 | 
| +++ b/src/core/SkBitmapProvider.h
 | 
| @@ -15,10 +15,10 @@
 | 
|  class SkBitmapProvider {
 | 
|  public:
 | 
|      explicit SkBitmapProvider(const SkBitmap& bm) : fBitmap(bm) {}
 | 
| -    explicit SkBitmapProvider(const SkImage* img) : fImage(SkSafeRef(img)) {}
 | 
| +    explicit SkBitmapProvider(const SkImage* img) : fImage(img) {}
 | 
|      SkBitmapProvider(const SkBitmapProvider& other)
 | 
|          : fBitmap(other.fBitmap)
 | 
| -        , fImage(SkSafeRef(other.fImage.get()))
 | 
| +        , fImage(other.fImage)
 | 
|      {}
 | 
|  
 | 
|      int width() const;
 | 
| @@ -38,8 +38,14 @@ public:
 | 
|      bool asBitmap(SkBitmap*) const;
 | 
|  
 | 
|  private:
 | 
| -    SkBitmap fBitmap;
 | 
| -    SkAutoTUnref<const SkImage> fImage;
 | 
| +    // Stack-allocated only.
 | 
| +    void* operator new(size_t) = delete;
 | 
| +    void* operator new(size_t, void*) = delete;
 | 
| +
 | 
| +    SkBitmap       fBitmap;
 | 
| +    // SkBitmapProvider is always short-lived/stack allocated, and the source image is guaranteed
 | 
| +    // to outlive its scope => we can store a raw ptr to avoid ref churn.
 | 
| +    const SkImage* fImage;
 | 
|  };
 | 
|  
 | 
|  #endif
 | 
| 
 |