Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 17f82557 authored by Mark Harman's avatar Mark Harman
Browse files

Block ae and awb lock for camera extensions.

parent 8c3fd7e7
Loading
Loading
Loading
Loading
+24 −2
Original line number Diff line number Diff line
@@ -871,12 +871,22 @@ public class CameraController2 extends CameraController {
        }

        private void setAutoExposureLock(CaptureRequest.Builder builder) {
            if( sessionType == SessionType.SESSIONTYPE_EXTENSION ) {
                // don't set for extensions
            }
            else {
                builder.set(CaptureRequest.CONTROL_AE_LOCK, ae_lock);
            }
        }

        private void setAutoWhiteBalanceLock(CaptureRequest.Builder builder) {
            if( sessionType == SessionType.SESSIONTYPE_EXTENSION ) {
                // don't set for extensions
            }
            else {
                builder.set(CaptureRequest.CONTROL_AWB_LOCK, wb_lock);
            }
        }

        private void setAFRegions(CaptureRequest.Builder builder) {
            if( af_regions != null && characteristics.get(CameraCharacteristics.CONTROL_MAX_REGIONS_AF) > 0 ) {
@@ -4972,6 +4982,9 @@ public class CameraController2 extends CameraController {

    @Override
    public void setAutoExposureLock(boolean enabled) {
        if( enabled ) {
            BLOCK_FOR_EXTENSIONS();
        }
        camera_settings.ae_lock = enabled;
        camera_settings.setAutoExposureLock(previewBuilder);
        try {
@@ -4996,6 +5009,9 @@ public class CameraController2 extends CameraController {

    @Override
    public void setAutoWhiteBalanceLock(boolean enabled) {
        if( enabled ) {
            BLOCK_FOR_EXTENSIONS();
        }
        camera_settings.wb_lock = enabled;
        camera_settings.setAutoWhiteBalanceLock(previewBuilder);
        try {
@@ -5493,6 +5509,12 @@ public class CameraController2 extends CameraController {
            else if( camera_settings.sensor_frame_duration > 0 ) {
                throw new RuntimeException("sensor_frame_duration not supported for extension session");
            }
            else if( camera_settings.ae_lock ) {
                throw new RuntimeException("ae_lock not supported for extension session");
            }
            else if( camera_settings.wb_lock ) {
                throw new RuntimeException("wb_lock not supported for extension session");
            }
        }

        try {
+4 −0
Original line number Diff line number Diff line
@@ -1912,6 +1912,10 @@ public class Preview implements SurfaceHolder.Callback, TextureView.SurfaceTextu
                    }
                    supported_flash_values = new_supported_flash_values;
                }

                // and disable ae and awb lock (as normally we don't set this when stopping/starting preview)
                camera_controller.setAutoExposureLock(false);
                camera_controller.setAutoWhiteBalanceLock(false);
            }
            else {
                camera_controller.setCameraExtension(false, 0);
+8 −0
Original line number Diff line number Diff line
@@ -1181,6 +1181,10 @@ public class MainUI {
    public boolean showExposureLockIcon() {
        if( !main_activity.getPreview().supportsExposureLock() )
            return false;
        if( main_activity.getApplicationInterface().isCameraExtensionPref() ) {
            // not supported for camera extensions
            return false;
        }
        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(main_activity);
        return sharedPreferences.getBoolean(PreferenceKeys.ShowExposureLockPreferenceKey, true);
    }
@@ -1188,6 +1192,10 @@ public class MainUI {
    public boolean showWhiteBalanceLockIcon() {
        if( !main_activity.getPreview().supportsWhiteBalanceLock() )
            return false;
        if( main_activity.getApplicationInterface().isCameraExtensionPref() ) {
            // not supported for camera extensions
            return false;
        }
        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(main_activity);
        return sharedPreferences.getBoolean(PreferenceKeys.ShowWhiteBalanceLockPreferenceKey, false);
    }