| Index: src/core/SkPictureRecorder.cpp
 | 
| diff --git a/src/core/SkPictureRecorder.cpp b/src/core/SkPictureRecorder.cpp
 | 
| index 5631a081d4a049c398f884e2644f6f8702597a93..758aa3e5ec5c85fc1f647a455613f748987cad7a 100644
 | 
| --- a/src/core/SkPictureRecorder.cpp
 | 
| +++ b/src/core/SkPictureRecorder.cpp
 | 
| @@ -62,7 +62,7 @@ sk_sp<SkPicture> SkPictureRecorder::finishRecordingAsPicture(uint32_t finishFlag
 | 
|      }
 | 
|  
 | 
|      // TODO: delay as much of this work until just before first playback?
 | 
| -    SkRecordOptimize(fRecord);
 | 
| +    SkRecordOptimize(fRecord.get());
 | 
|  
 | 
|      if (fRecord->count() == 0) {
 | 
|          if (finishFlags & kReturnNullForEmpty_FinishFlag) {
 | 
| @@ -122,7 +122,7 @@ sk_sp<SkDrawable> SkPictureRecorder::finishRecordingAsDrawable(uint32_t finishFl
 | 
|      fRecorder->flushMiniRecorder();
 | 
|      fRecorder->restoreToCount(1);  // If we were missing any restores, add them now.
 | 
|  
 | 
| -    SkRecordOptimize(fRecord);
 | 
| +    SkRecordOptimize(fRecord.get());
 | 
|  
 | 
|      if (fRecord->count() == 0) {
 | 
|          if (finishFlags & kReturnNullForEmpty_FinishFlag) {
 | 
| @@ -137,11 +137,8 @@ sk_sp<SkDrawable> SkPictureRecorder::finishRecordingAsDrawable(uint32_t finishFl
 | 
|      }
 | 
|  
 | 
|      sk_sp<SkDrawable> drawable =
 | 
| -         sk_make_sp<SkRecordedDrawable>(fRecord, fBBH, fRecorder->detachDrawableList(), fCullRect);
 | 
| -
 | 
| -    // release our refs now, so only the drawable will be the owner.
 | 
| -    fRecord.reset(nullptr);
 | 
| -    fBBH.reset(nullptr);
 | 
| +         sk_make_sp<SkRecordedDrawable>(std::move(fRecord), std::move(fBBH),
 | 
| +                                        fRecorder->detachDrawableList(), fCullRect);
 | 
|  
 | 
|      return drawable;
 | 
|  }
 | 
| 
 |