From 35274cb0ce90ce4381e534d1c04c9d919eb588fc Mon Sep 17 00:00:00 2001 From: Robert Carr Date: Thu, 12 Apr 2018 12:33:23 -0700 Subject: ViewRoot: Ensure we release surface from setWindowStopped. Otherwise, we may attempt to reinitialize the ThreadedRenderer with a Surface which is not actually valid, e.g. from handleWindowFocusChanged. Entering a code path where the threaded renderer does not heed the stopped signal. This change ensures isValid returns false when the Surface is not valid preventing us from calling initialize/initializeIfNeeded, or udpateSurface. Bug: 62536731 Test: For the monkeys. Change-Id: I65939a29db4db70c6eb6bc4b258a9ed09a86e0ce --- core/java/android/view/ViewRootImpl.java | 1 + 1 file changed, 1 insertion(+) (limited to 'core/java/android/view/ViewRootImpl.java') diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index f6d9a16e4246..722d54ad4d87 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -1334,6 +1334,7 @@ public final class ViewRootImpl implements ViewParent, if (renderer != null) { renderer.destroyHardwareResources(mView); } + mSurface.release(); } for (int i = 0; i < mWindowStoppedCallbacks.size(); i++) { -- cgit v1.2.3