summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorZhijun He <zhijunhe@google.com>2015-06-15 09:43:55 -0700
committerZhijun He <zhijunhe@google.com>2015-06-15 09:43:55 -0700
commit42499640cc1f1fa16c43fc06cf62001b44027451 (patch)
treea3f613c838bfd5d2f6d09c052b440f292be1146e /core/java/android
parent54b65ff3004a1585867e8c3c4d267b381123e179 (diff)
Camera2: fix Surface cast issue
Can not cast an object array directly to a Surface array. Change-Id: Ie2cb711f9e1ff0fc17d6038992dc3c7af9471ccf
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/hardware/camera2/impl/CameraDeviceImpl.java17
1 files changed, 10 insertions, 7 deletions
diff --git a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
index 8512b239114c..a1ebe6a46fef 100644
--- a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
+++ b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
@@ -2053,8 +2053,10 @@ public class CameraDeviceImpl extends CameraDevice {
requestMetadata, /*reprocess*/false, CameraCaptureSession.SESSION_ID_NONE);
// Overwrite the capture intent to make sure a good value is set.
- Surface[] surfaces = (Surface[])outputSurfaces.toArray();
- if (outputSurfaces.size() == 1 && SurfaceUtils.isSurfaceForHwVideoEncoder(surfaces[0])) {
+ Iterator<Surface> iterator = outputSurfaces.iterator();
+ Surface firstSurface = iterator.next();
+ Surface secondSurface = null;
+ if (outputSurfaces.size() == 1 && SurfaceUtils.isSurfaceForHwVideoEncoder(firstSurface)) {
singleTargetRequestBuilder.set(CaptureRequest.CONTROL_CAPTURE_INTENT,
CaptureRequest.CONTROL_CAPTURE_INTENT_PREVIEW);
} else {
@@ -2071,19 +2073,20 @@ public class CameraDeviceImpl extends CameraDevice {
requestMetadata, /*reprocess*/false, CameraCaptureSession.SESSION_ID_NONE);
doubleTargetRequestBuilder.set(CaptureRequest.CONTROL_CAPTURE_INTENT,
CaptureRequest.CONTROL_CAPTURE_INTENT_VIDEO_RECORD);
- doubleTargetRequestBuilder.addTarget(surfaces[0]);
- doubleTargetRequestBuilder.addTarget(surfaces[1]);
+ doubleTargetRequestBuilder.addTarget(firstSurface);
+ secondSurface = iterator.next();
+ doubleTargetRequestBuilder.addTarget(secondSurface);
doubleTargetRequestBuilder.setPartOfCHSRequestList(/*partOfCHSList*/true);
// Make sure singleTargetRequestBuilder contains only recording surface for
// preview + recording case.
- Surface recordingSurface = surfaces[0];
+ Surface recordingSurface = firstSurface;
if (!SurfaceUtils.isSurfaceForHwVideoEncoder(recordingSurface)) {
- recordingSurface = surfaces[1];
+ recordingSurface = secondSurface;
}
singleTargetRequestBuilder.addTarget(recordingSurface);
} else {
// Single output case: either recording or preview.
- singleTargetRequestBuilder.addTarget(surfaces[0]);
+ singleTargetRequestBuilder.addTarget(firstSurface);
}
// Generate the final request list.