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
This commit is contained in:
Robert Carr
2018-04-12 12:33:23 -07:00
parent 8ec69c71a7
commit 35274cb0ce

View File

@@ -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++) {