From e56e606f82c94ab9adce1e6b69881653c225cf20 Mon Sep 17 00:00:00 2001 From: Shuzhen Wang Date: Wed, 25 Jan 2017 11:53:22 -0800 Subject: [PATCH] Camera2: Handle (0, 0) size for deferred OutputConfiguration We need to handle below sequence of events: 1. OutputConfiguration(Size(0, 0), klass) 2. addSurface(surface) 3. createCameraCaptureSession In this case, allow the addSurface() to succeed. Test: camera works in keep/hangouts/contacts Bug: 34697112 Change-Id: I726c60cce9a11c69b050aad47f4ed4a0a7a0870e --- .../hardware/camera2/params/OutputConfiguration.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/core/java/android/hardware/camera2/params/OutputConfiguration.java b/core/java/android/hardware/camera2/params/OutputConfiguration.java index 2d5c4ce1f16d4..6b7546f4028b7 100644 --- a/core/java/android/hardware/camera2/params/OutputConfiguration.java +++ b/core/java/android/hardware/camera2/params/OutputConfiguration.java @@ -358,7 +358,12 @@ public final class OutputConfiguration implements Parcelable { throw new IllegalArgumentException("Exceeds maximum number of surfaces"); } - if (!mConfiguredSize.equals(SurfaceUtils.getSurfaceSize(surface))) { + // TODO: b/34697112. This needs to be reverted once app fix is merged. + // Do not throw exception for below case: + // - OutputConfiguration(Size(0, 0), klass) + // - addSurface(surface) + if ((mConfiguredSize.getWidth() != 0 || mConfiguredSize.getHeight() != 0) && + !mConfiguredSize.equals(SurfaceUtils.getSurfaceSize(surface))) { throw new IllegalArgumentException("The size of added surface doesn't match"); } if (mConfiguredDataspace != SurfaceUtils.getSurfaceDataspace(surface)) {