| Index: src/image/SkSurface.cpp
 | 
| diff --git a/src/image/SkSurface.cpp b/src/image/SkSurface.cpp
 | 
| index ecb80427576de2ae2b99bf8235662d8820f65315..edc6ef5fa0e6dd225a0b22b453605f3587c52789 100644
 | 
| --- a/src/image/SkSurface.cpp
 | 
| +++ b/src/image/SkSurface.cpp
 | 
| @@ -43,11 +43,7 @@ void SkSurface_Base::onDraw(SkCanvas* canvas, SkScalar x, SkScalar y,
 | 
|  void SkSurface_Base::aboutToDraw(ContentChangeMode mode) {
 | 
|      this->dirtyGenerationID();
 | 
|  
 | 
| -    if (NULL != fCachedCanvas) {
 | 
| -        SkASSERT(fCachedCanvas->getSurfaceBase() == this || \
 | 
| -                 NULL == fCachedCanvas->getSurfaceBase());
 | 
| -        fCachedCanvas->setSurfaceBase(NULL);
 | 
| -    }
 | 
| +    SkASSERT(!fCachedCanvas || fCachedCanvas->getSurfaceBase() == this);
 | 
|  
 | 
|      if (NULL != fCachedImage) {
 | 
|          // the surface may need to fork its backend, if its sharing it with
 | 
| @@ -61,12 +57,13 @@ void SkSurface_Base::aboutToDraw(ContentChangeMode mode) {
 | 
|          // that the next request will get our new contents.
 | 
|          fCachedImage->unref();
 | 
|          fCachedImage = NULL;
 | 
| +    } else if (kDiscard_ContentChangeMode == mode) {
 | 
| +        this->onDiscard();
 | 
|      }
 | 
|  }
 | 
|  
 | 
|  uint32_t SkSurface_Base::newGenerationID() {
 | 
| -    this->installIntoCanvasForDirtyNotification();
 | 
| -
 | 
| +    SkASSERT(!fCachedCanvas || fCachedCanvas->getSurfaceBase() == this);
 | 
|      static int32_t gID;
 | 
|      return sk_atomic_inc(&gID) + 1;
 | 
|  }
 | 
| 
 |