Fix unref order in SkGpuDevice

GrContext should be unrefed after GrDrawContext.

TBR=bsalomon@google.com
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1569833004

Review URL: https://codereview.chromium.org/1569833004
diff --git a/src/gpu/SkGpuDevice.h b/src/gpu/SkGpuDevice.h
index a35e92b..19bef21 100644
--- a/src/gpu/SkGpuDevice.h
+++ b/src/gpu/SkGpuDevice.h
@@ -15,6 +15,7 @@
 #include "SkPicture.h"
 #include "SkRegion.h"
 #include "SkSurface.h"
+#include "GrDrawContext.h"
 #include "GrContext.h"
 #include "GrSurfacePriv.h"
 
@@ -53,7 +54,7 @@
     static SkGpuDevice* Create(GrContext*, SkSurface::Budgeted, const SkImageInfo&,
                                int sampleCount, const SkSurfaceProps*, InitContents);
 
-    virtual ~SkGpuDevice();
+    ~SkGpuDevice() override {}
 
     SkGpuDevice* cloneDevice(const SkSurfaceProps& props) {
         SkBaseDevice* dev = this->onCreateDevice(CreateInfo(this->imageInfo(), kPossible_TileUsage,
@@ -153,12 +154,14 @@
                                           const SkMatrix*, const SkPaint*) override;
 
 private:
-    GrContext*                      fContext;
+    // We want these unreffed in DrawContext, RenderTarget, GrContext order.
+    SkAutoTUnref<GrContext>         fContext;
+    SkAutoTUnref<GrRenderTarget>    fRenderTarget;
+    SkAutoTUnref<GrDrawContext>     fDrawContext;
+
     SkAutoTUnref<const SkClipStack> fClipStack;
     SkIPoint                        fClipOrigin;
-    GrClip                          fClip;
-    SkAutoTUnref<GrDrawContext>     fDrawContext;
-    GrRenderTarget*                 fRenderTarget;
+    GrClip                          fClip;;
     // remove when our clients don't rely on accessBitmap()
     SkBitmap                        fLegacyBitmap;
     bool                            fNeedClear;