[go: nahoru, domu]

Remove the remaining usage of OnPreviewOutputUpdateListener and apply PreviewSurfaceCallback helper.

- Use helper class in core test app and extension test app.
- CameraView is using dimensions so it has to use the low level API.
- Remove the last usage of the older listener outside of PreviewTest.

Bug: 117519540
Test: manual test and ./gradlew bOS
Change-Id: I571944b7771a6f1aa3d0ff7f3301c0e2e64beb6d
diff --git a/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/cameracontrollers/CameraXController.kt b/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/cameracontrollers/CameraXController.kt
index 4571b0b..6715719 100644
--- a/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/cameracontrollers/CameraXController.kt
+++ b/camera/integration-tests/timingtestapp/src/main/java/androidx/camera/integration/antelope/cameracontrollers/CameraXController.kt
@@ -27,6 +27,8 @@
 import androidx.camera.core.ImageCaptureConfig
 import androidx.camera.core.Preview
 import androidx.camera.core.PreviewConfig
+import androidx.camera.core.PreviewUtil
+import androidx.camera.core.PreviewUtil.createPreviewSurfaceCallback
 import androidx.camera.core.impl.utils.executor.CameraXExecutors
 import androidx.camera.integration.antelope.CameraParams
 import androidx.camera.integration.antelope.CameraXImageAvailableListener
@@ -90,19 +92,22 @@
 
         // Set preview to observe the surface texture
         activity.runOnUiThread {
-            previewUseCase.setOnPreviewOutputUpdateListener {
-                viewFinderOutput: Preview.PreviewOutput? ->
-                if (viewFinderOutput?.surfaceTexture != null) {
-                    if (!isCameraSurfaceTextureReleased(viewFinderOutput.surfaceTexture)) {
-                        // View swizzling required to for the view hierarchy to update correctly
+            previewUseCase.previewSurfaceCallback = createPreviewSurfaceCallback(
+                    object : PreviewUtil.SurfaceTextureCallback {
+
+                override fun onSafeToRelease(surfaceTexture: SurfaceTexture) {
+                    surfaceTexture.release()
+                }
+
+                override fun onSurfaceTextureReady(surfaceTexture: SurfaceTexture) {
+                    if (!isCameraSurfaceTextureReleased(surfaceTexture)) {
                         val viewGroup = params.cameraXPreviewTexture?.parent as ViewGroup
                         viewGroup.removeView(params.cameraXPreviewTexture)
                         viewGroup.addView(params.cameraXPreviewTexture)
-                        params.cameraXPreviewTexture?.surfaceTexture =
-                            viewFinderOutput.surfaceTexture
+                        params.cameraXPreviewTexture?.surfaceTexture = surfaceTexture
                     }
                 }
-            }
+            })
         }
 
         when (testConfig.currentRunningTest) {
@@ -187,7 +192,8 @@
 
     // Pause in multi-captures to make sure HDR routines don't get overloaded
     logd("CameraX TakePicture. Pausing for " +
-        PrefHelper.getPreviewBuffer(activity) + "ms to let preview run.")
+            PrefHelper.getPreviewBuffer(activity) + "ms to let preview run.")
+
     params.timer.previewFillStart = System.currentTimeMillis()
     Thread.sleep(PrefHelper.getPreviewBuffer(activity))
     params.timer.previewFillEnd = System.currentTimeMillis()