Clean up ImageReader when VrMode is disabled.

Adjusts some of the startImageReader code as well.

Bug: 34281731
Test: Start a VR App and ensure the virtual display is functional.
Start it a second time and ensure the virtual display is functional.
Previously, any session after the first did not have a functional
virtual display.

Change-Id: Ifbf9fb9466f550ae3e9b30a1d7cf4d2f0a32578b
This commit is contained in:
Santos Cordon
2017-04-12 15:20:33 -07:00
committed by Alex Sakhartchouk
parent feada91060
commit 728d81f673

View File

@@ -107,7 +107,6 @@ class CompatibilityDisplay {
// TODO: STOPSHIP Remove createVirtualDisplay conditional before launching.
if (createVirtualDisplay) {
startVirtualDisplay();
startImageReader();
}
} else {
// Stop virtual display to test exit condition
@@ -208,6 +207,8 @@ class CompatibilityDisplay {
if (mVirtualDisplay != null) {
mActivityManagerInternal.setVrCompatibilityDisplayId(
mVirtualDisplay.getDisplay().getDisplayId());
// Now create the ImageReader to supply a Surface to the new virtual display.
startImageReader();
} else {
Log.w(TAG, "Virtual display id is null after createVirtualDisplay");
mActivityManagerInternal.setVrCompatibilityDisplayId(INVALID_DISPLAY);
@@ -241,6 +242,7 @@ class CompatibilityDisplay {
mVirtualDisplay.release();
mVirtualDisplay = null;
}
stopImageReader();
}
}
}
@@ -286,4 +288,14 @@ class CompatibilityDisplay {
setSurfaceLocked(mImageReader.getSurface());
}
}
/**
* Cleans up the ImageReader.
*/
private void stopImageReader() {
if (mImageReader != null) {
mImageReader.close();
mImageReader = null;
}
}
}