| Index: src/gpu/GrResourceCache.h | 
| diff --git a/src/gpu/GrResourceCache.h b/src/gpu/GrResourceCache.h | 
| index bf7b237006b0fd270a1056744c130b5ce006be94..6c64ddc9333a6ce8301698028abcb1f80206004a 100644 | 
| --- a/src/gpu/GrResourceCache.h | 
| +++ b/src/gpu/GrResourceCache.h | 
| @@ -11,7 +11,6 @@ | 
| #include "GrGpuResource.h" | 
| #include "GrGpuResourceCacheAccess.h" | 
| #include "GrGpuResourcePriv.h" | 
| -#include "GrResourceCache.h" | 
| #include "GrResourceKey.h" | 
| #include "SkMessageBus.h" | 
| #include "SkRefCnt.h" | 
| @@ -164,16 +163,23 @@ | 
| /** Purges all resources that don't have external owners. */ | 
| void purgeAllUnlocked(); | 
|  | 
| -    /** Returns true if the cache would like a flush to occur in order to make more resources | 
| -        purgeable. */ | 
| -    bool requestsFlush() const { return fRequestFlush; } | 
| - | 
| -    enum FlushType { | 
| -        kExternal, | 
| -        kImmediateMode, | 
| -        kCacheRequested, | 
| -    }; | 
| -    void notifyFlushOccurred(FlushType); | 
| +    /** | 
| +     * The callback function used by the cache when it is still over budget after a purge. The | 
| +     * passed in 'data' is the same 'data' handed to setOverbudgetCallback. | 
| +     */ | 
| +    typedef void (*PFOverBudgetCB)(void* data); | 
| + | 
| +    /** | 
| +     * Set the callback the cache should use when it is still over budget after a purge. The 'data' | 
| +     * provided here will be passed back to the callback. Note that the cache will attempt to purge | 
| +     * any resources newly freed by the callback. | 
| +     */ | 
| +    void setOverBudgetCallback(PFOverBudgetCB overBudgetCB, void* data) { | 
| +        fOverBudgetCB = overBudgetCB; | 
| +        fOverBudgetData = data; | 
| +    } | 
| + | 
| +    void notifyFlushOccurred(); | 
|  | 
| #if GR_CACHE_STATS | 
| struct Stats { | 
| @@ -320,7 +326,8 @@ | 
| int                                 fBudgetedCount; | 
| size_t                              fBudgetedBytes; | 
|  | 
| -    bool                                fRequestFlush; | 
| +    PFOverBudgetCB                      fOverBudgetCB; | 
| +    void*                               fOverBudgetData; | 
|  | 
| // We keep track of the "timestamps" of the last n flushes. If a resource hasn't been used in | 
| // that time then we well preemptively purge it to reduce memory usage. | 
|  |