summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/view/ViewRootImpl.java16
-rw-r--r--libs/hwui/aconfig/hwui_flags.aconfig10
2 files changed, 19 insertions, 7 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 9a2aa0b8a682..75d2da1b70e4 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -9951,11 +9951,13 @@ public final class ViewRootImpl implements ViewParent,
return false;
}
- if (!mIsDrawing) {
- destroyHardwareRenderer();
- } else {
- Log.e(mTag, "Attempting to destroy the window while drawing!\n" +
- " window=" + this + ", title=" + mWindowAttributes.getTitle());
+ if (!com.android.graphics.hwui.flags.Flags.removeVriSketchyDestroy()) {
+ if (!mIsDrawing) {
+ destroyHardwareRenderer();
+ } else {
+ Log.e(mTag, "Attempting to destroy the window while drawing!\n"
+ + " window=" + this + ", title=" + mWindowAttributes.getTitle());
+ }
}
mHandler.sendEmptyMessage(MSG_DIE);
return true;
@@ -9976,9 +9978,9 @@ public final class ViewRootImpl implements ViewParent,
dispatchDetachedFromWindow();
}
- if (mAdded && !mFirst) {
- destroyHardwareRenderer();
+ destroyHardwareRenderer();
+ if (mAdded && !mFirst) {
if (mView != null) {
int viewVisibility = mView.getVisibility();
boolean viewVisibilityChanged = mViewVisibility != viewVisibility;
diff --git a/libs/hwui/aconfig/hwui_flags.aconfig b/libs/hwui/aconfig/hwui_flags.aconfig
index 5ad788c67816..fa27af671be6 100644
--- a/libs/hwui/aconfig/hwui_flags.aconfig
+++ b/libs/hwui/aconfig/hwui_flags.aconfig
@@ -154,3 +154,13 @@ flag {
description: "API's that enable animated image drawables to use nearest sampling when scaling."
bug: "370523334"
}
+
+flag {
+ name: "remove_vri_sketchy_destroy"
+ namespace: "core_graphics"
+ description: "Remove the eager yet thread-violating destroyHardwareResources in VRI#die"
+ bug: "377057106"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+} \ No newline at end of file