From c58a602a2f832a1defbfb1d18e2a1c6cd7fb286c Mon Sep 17 00:00:00 2001 From: Chien-Yu Chen Date: Tue, 16 Jun 2015 11:13:48 -0700 Subject: [PATCH] Camera2: Handle getting input surface failures Don't get the input surface after creating a session failed. Catch the CameraRuntimeException when getting the input surface so onConfigureFailed will be fired. Bug: 20945169 Change-Id: Iea6891c2a1d7419d7d6669a17114f949c03a0319 --- .../hardware/camera2/impl/CameraDeviceImpl.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java index ed167f06e0c50..95c46d1b8e677 100644 --- a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java +++ b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java @@ -536,12 +536,16 @@ public class CameraDeviceImpl extends CameraDevice { CameraAccessException pendingException = null; Surface input = null; try { - // configure streams and then block until IDLE + // configure streams and then block until IDLE configureSuccess = configureStreamsChecked(inputConfig, outputConfigurations, isConstrainedHighSpeed); - if (inputConfig != null) { + if (configureSuccess == true && inputConfig != null) { input = new Surface(); - mRemoteDevice.getInputSurface(/*out*/input); + try { + mRemoteDevice.getInputSurface(/*out*/input); + } catch (CameraRuntimeException e) { + e.asChecked(); + } } } catch (CameraAccessException e) { configureSuccess = false;