diff options
Diffstat (limited to 'src/gpu/GrContext.cpp')
-rw-r--r-- | src/gpu/GrContext.cpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp index 1f6934d441..1d6bb32142 100644 --- a/src/gpu/GrContext.cpp +++ b/src/gpu/GrContext.cpp @@ -148,7 +148,26 @@ void GrContext::abandonContext() { // don't try to free the resources in the API. fResourceCache->abandonAll(); - fGpu->contextAbandoned(); + fGpu->disconnect(GrGpu::DisconnectType::kAbandon); + + fBatchFontCache->freeAll(); + fLayerCache->freeAll(); + fTextBlobCache->freeAll(); +} + +void GrContext::releaseResourcesAndAbandonContext() { + ASSERT_SINGLE_OWNER + + fResourceProvider->abandon(); + + // Need to abandon the drawing manager first so all the render targets + // will be released/forgotten before they too are abandoned. + fDrawingManager->abandon(); + + // Release all resources in the backend 3D API. + fResourceCache->releaseAll(); + + fGpu->disconnect(GrGpu::DisconnectType::kCleanup); fBatchFontCache->freeAll(); fLayerCache->freeAll(); |