diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java
index 8517d22..71cb0e4 100644
--- a/src/com/android/camera/PhotoModule.java
+++ b/src/com/android/camera/PhotoModule.java
@@ -3488,6 +3488,22 @@
                 .pref_camera_advanced_feature_value_refocus_on);
         String optizoomOn = mActivity.getString(R.string
                 .pref_camera_advanced_feature_value_optizoom_on);
+        if (refocusOn.equals(mSceneMode)) {
+            try {
+                mSceneMode = Parameters.SCENE_MODE_AUTO;
+                mUI.setPreference(CameraSettings.KEY_ADVANCED_FEATURES, refocusOn);
+                mUI.showRefocusDialog();
+            } catch (NullPointerException e) {
+            }
+        } else if (optizoomOn.equals(mSceneMode)) {
+            try {
+                mSceneMode = Parameters.SCENE_MODE_AUTO;
+                mUI.setPreference(CameraSettings.KEY_ADVANCED_FEATURES, optizoomOn);
+            } catch (NullPointerException e) {
+            }
+        } else if (mSceneMode == null) {
+            mSceneMode = Parameters.SCENE_MODE_AUTO;
+        }
 
         if (CameraUtil.isSupported(mSceneMode, mParameters.getSupportedSceneModes())) {
             if (!mParameters.getSceneMode().equals(mSceneMode)) {
@@ -3499,24 +3515,6 @@
                 mCameraDevice.setParameters(mParameters);
                 mParameters = mCameraDevice.getParameters();
             }
-        } else {
-            if (refocusOn.equals(mSceneMode)) {
-                try {
-                    mUI.setPreference(CameraSettings.KEY_ADVANCED_FEATURES, refocusOn);
-                    mUI.showRefocusDialog();
-                } catch (NullPointerException e) {
-                }
-            } else if (optizoomOn.equals(mSceneMode)) {
-                try {
-                    mUI.setPreference(CameraSettings.KEY_ADVANCED_FEATURES, optizoomOn);
-                } catch (NullPointerException e) {
-                }
-            } else {
-                mSceneMode = mParameters.getSceneMode();
-                if (mSceneMode == null) {
-                    mSceneMode = Parameters.SCENE_MODE_AUTO;
-                }
-            }
         }
 
         // Set JPEG quality.
