Have GrContext abandoned call also check if the underlying device is lost.
Change-Id: Iba09b8f39138e99cbd987880b2da07fdec799248
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/280638
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp
index deda9e3..343bb9d 100644
--- a/src/gpu/GrContext.cpp
+++ b/src/gpu/GrContext.cpp
@@ -111,7 +111,7 @@
//////////////////////////////////////////////////////////////////////////////
void GrContext::abandonContext() {
- if (this->abandoned()) {
+ if (INHERITED::abandoned()) {
return;
}
@@ -135,7 +135,7 @@
}
void GrContext::releaseResourcesAndAbandonContext() {
- if (this->abandoned()) {
+ if (INHERITED::abandoned()) {
return;
}
@@ -155,6 +155,18 @@
fGpu->disconnect(GrGpu::DisconnectType::kCleanup);
}
+bool GrContext::abandoned() {
+ if (INHERITED::abandoned()) {
+ return true;
+ }
+
+ if (fGpu && fGpu->isDeviceLost()) {
+ this->abandonContext();
+ return true;
+ }
+ return false;
+}
+
void GrContext::resetGLTextureBindings() {
if (this->abandoned() || this->backend() != GrBackendApi::kOpenGL) {
return;