| Index: src/gpu/GrGpu.h | 
| diff --git a/src/gpu/GrGpu.h b/src/gpu/GrGpu.h | 
| index 0da1aa63992b920be1acf5a3ec6f7117a6a9f52e..b3251dc14fa6bc2ca03a37f89d7cdda6ff16b56b 100644 | 
| --- a/src/gpu/GrGpu.h | 
| +++ b/src/gpu/GrGpu.h | 
| @@ -61,11 +61,17 @@ public: | 
|  | 
| GrPathRendering* pathRendering() { return fPathRendering.get();  } | 
|  | 
| -    // Called by GrContext when the underlying backend context has been destroyed. | 
| -    // GrGpu should use this to ensure that no backend API calls will be made from | 
| -    // here onward, including in its destructor. Subclasses should call | 
| -    // INHERITED::contextAbandoned() if they override this. | 
| -    virtual void contextAbandoned(); | 
| +    enum class DisconnectType { | 
| +        // No cleanup should be attempted, immediately cease making backend API calls | 
| +        kAbandon, | 
| +        // Free allocated resources (not known by GrResourceCache) before returning and | 
| +        // ensure no backend backend 3D API calls will be made after disconnect() returns. | 
| +        kCleanup, | 
| +    }; | 
| + | 
| +    // Called by GrContext when the underlying backend context is already or will be destroyed | 
| +    // before GrContext. | 
| +    virtual void disconnect(DisconnectType); | 
|  | 
| /** | 
| * The GrGpu object normally assumes that no outsider is setting state | 
|  |