diff options
author | likaid <likaid@codeaurora.org> | 2015-03-02 16:02:01 +0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2015-03-20 07:33:29 -0700 |
commit | d52c003516a93991174b09bef3756055e4f3be22 (patch) | |
tree | aff725e67413cf9afaa64a392fd7e174cd1d8e0a | |
parent | e945dddc2d1582d0246c6d7f823c03d2e33cd847 (diff) | |
download | android_packages_apps_Snap-d52c003516a93991174b09bef3756055e4f3be22.tar.gz android_packages_apps_Snap-d52c003516a93991174b09bef3756055e4f3be22.tar.bz2 android_packages_apps_Snap-d52c003516a93991174b09bef3756055e4f3be22.zip |
SnapdragonCamera: Fix app FC when time lapse and HFR is set to ON
After HFR and time lapse both are on, the ListMenu is initialize again
and mListMenu is set null which lead to NullPointerException happened.
Don't initialize listmenu when it's showing, move toast to VideoMenu
reference similar code in PhotoModule.
Change-Id: I9eaa308cc1b5eccb7bc86a3da6ae99f09b280be9
CRs-Fixed: 796135
-rw-r--r-- | src/com/android/camera/VideoMenu.java | 33 | ||||
-rw-r--r-- | src/com/android/camera/VideoModule.java | 3 |
2 files changed, 31 insertions, 5 deletions
diff --git a/src/com/android/camera/VideoMenu.java b/src/com/android/camera/VideoMenu.java index 2706357ef..de8d5e4e2 100644 --- a/src/com/android/camera/VideoMenu.java +++ b/src/com/android/camera/VideoMenu.java @@ -42,8 +42,10 @@ import com.android.camera.ui.ListSubMenu; import com.android.camera.ui.ListMenu; import com.android.camera.ui.TimeIntervalPopup; import com.android.camera.ui.RotateImageView; +import com.android.camera.ui.RotateTextToast; import org.codeaurora.snapcam.R; import android.widget.HorizontalScrollView; +import android.widget.Toast; import android.view.ViewGroup; import android.view.WindowManager; import android.view.Display; @@ -653,12 +655,12 @@ public class VideoMenu extends MenuController @Override // Hit when an item in the second-level popup gets selected public void onListPrefChanged(ListPreference pref) { + onSettingChanged(pref); if (mPopupStatus == POPUP_SECOND_LEVEL) { mListMenu.reloadPreference(); animateFadeOut(mListSubMenu, 2); + ((ListMenu) mListMenu).resetHighlight(); } - super.onSettingChanged(pref); - ((ListMenu) mListMenu).resetHighlight(); } protected void initializePopup() { @@ -758,8 +760,35 @@ public class VideoMenu extends MenuController animateSlideOut(mListMenu, 1); } + // Return true if the preference has the specified key but not the value. + private static boolean notSame(ListPreference pref, String key, String value) { + return (key.equals(pref.getKey()) && !value.equals(pref.getValue())); + } + @Override public void onSettingChanged(ListPreference pref) { + + if (notSame(pref, CameraSettings.KEY_VIDEO_TIME_LAPSE_FRAME_INTERVAL, + mActivity.getString(R.string.pref_video_time_lapse_frame_interval_default))) { + ListPreference hfrPref = + mPreferenceGroup.findPreference(CameraSettings.KEY_VIDEO_HIGH_FRAME_RATE); + if (hfrPref != null && !"off".equals(hfrPref.getValue())) { + RotateTextToast.makeText(mActivity, R.string.error_app_unsupported_hfr_selection, + Toast.LENGTH_LONG).show(); + } + setPreference(CameraSettings.KEY_VIDEO_HIGH_FRAME_RATE, "off"); + } + if (notSame(pref, CameraSettings.KEY_VIDEO_HIGH_FRAME_RATE, "off")) { + String defaultValue = + mActivity.getString(R.string.pref_video_time_lapse_frame_interval_default); + ListPreference lapsePref = mPreferenceGroup + .findPreference(CameraSettings.KEY_VIDEO_TIME_LAPSE_FRAME_INTERVAL); + if (lapsePref != null && !defaultValue.equals(lapsePref.getValue())) { + RotateTextToast.makeText(mActivity, R.string.error_app_unsupported_hfr_selection, + Toast.LENGTH_LONG).show(); + } + setPreference(CameraSettings.KEY_VIDEO_TIME_LAPSE_FRAME_INTERVAL, defaultValue); + } super.onSettingChanged(pref); } diff --git a/src/com/android/camera/VideoModule.java b/src/com/android/camera/VideoModule.java index 17b8ce1ce..680a7fa68 100644 --- a/src/com/android/camera/VideoModule.java +++ b/src/com/android/camera/VideoModule.java @@ -2300,12 +2300,9 @@ public class VideoModule implements CameraModule, (disMode.equals("enable")) || ((hdr != null) && (!hdr.equals("off"))) ) { Log.v(TAG,"HDR/DIS/Time Lapse ON for HFR/HSR selection, turning HFR/HSR off"); - RotateTextToast.makeText(mActivity, R.string.error_app_unsupported_hfr_selection, - Toast.LENGTH_LONG).show(); mParameters.setVideoHighFrameRate("off"); mParameters.set(CameraSettings.KEY_VIDEO_HSR, "off"); mUI.overrideSettings(CameraSettings.KEY_VIDEO_HIGH_FRAME_RATE, "off"); - mUI.initializePopup(mPreferenceGroup); } } |