summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera
diff options
context:
space:
mode:
authorjunjiez <junjiez@codeaurora.org>2016-09-07 11:27:18 +0800
committerGerrit - the friendly Code Review server <code-review@localhost>2016-09-14 17:22:52 -0700
commitdbfa594f2b588c8b52e87eb5f90c0df05bde6a7e (patch)
treead28d02c3985cca3b5452e443165a23eba18cd21 /src/com/android/camera
parente2c6bdcd24425d811cf98b967a09a42449967f56 (diff)
downloadandroid_packages_apps_Snap-dbfa594f2b588c8b52e87eb5f90c0df05bde6a7e.tar.gz
android_packages_apps_Snap-dbfa594f2b588c8b52e87eb5f90c0df05bde6a7e.tar.bz2
android_packages_apps_Snap-dbfa594f2b588c8b52e87eb5f90c0df05bde6a7e.zip
SnapdragonCamera:Fix instance of SettingsManager is null
When there are two CameraActivities, one of them is destroyed, the instance of settingsManager will be destroyed too. When the other CameraActivity invokes SettingsManager.getInstance(), it may return null and cause exceptions.Create and hold a instance of SettingsManager in each CameraActivity to make sure it's not null. Change-Id: Id2c355bf63f61e09f914113082db2876f28b9658 CRs-Fixed: 1060909
Diffstat (limited to 'src/com/android/camera')
-rw-r--r--src/com/android/camera/CameraActivity.java14
-rw-r--r--src/com/android/camera/CaptureModule.java2
-rw-r--r--src/com/android/camera/CaptureUI.java2
-rw-r--r--src/com/android/camera/SettingsManager.java20
4 files changed, 11 insertions, 27 deletions
diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java
index a808dbf60..6c2360d8a 100644
--- a/src/com/android/camera/CameraActivity.java
+++ b/src/com/android/camera/CameraActivity.java
@@ -235,6 +235,7 @@ public class CameraActivity extends Activity
private Intent mPanoramaShareIntent;
private LocalMediaObserver mLocalImagesObserver;
private LocalMediaObserver mLocalVideosObserver;
+ private SettingsManager mSettingsManager;
private final int DEFAULT_SYSTEM_UI_VISIBILITY = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
@@ -1435,7 +1436,7 @@ public class CameraActivity extends Activity
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
- SettingsManager.createInstance(this);
+ mSettingsManager = new SettingsManager(this);
LayoutInflater inflater = getLayoutInflater();
View rootLayout = inflater.inflate(R.layout.camera, null, false);
@@ -1472,7 +1473,7 @@ public class CameraActivity extends Activity
}
}
- boolean cam2on = SettingsManager.getInstance().isCamera2On();
+ boolean cam2on = mSettingsManager.isCamera2On();
if (cam2on && moduleIndex == ModuleSwitcher.PHOTO_MODULE_INDEX)
moduleIndex = ModuleSwitcher.CAPTURE_MODULE_INDEX;
@@ -1775,9 +1776,8 @@ public class CameraActivity extends Activity
mWakeLock.release();
Log.d(TAG, "wake lock release");
}
- SettingsManager settingsMngr = SettingsManager.getInstance();
- if (settingsMngr != null) {
- settingsMngr.destroyInstance();
+ if (mSettingsManager != null) {
+ mSettingsManager = null;
}
if (mCursor != null) {
getContentResolver().unregisterContentObserver(mLocalImagesObserver);
@@ -1936,7 +1936,7 @@ public class CameraActivity extends Activity
@Override
public void onModuleSelected(int moduleIndex) {
- boolean cam2on = SettingsManager.getInstance().isCamera2On();
+ boolean cam2on = mSettingsManager.isCamera2On();
mForceReleaseCamera = cam2on && moduleIndex == ModuleSwitcher.PHOTO_MODULE_INDEX;
if (mForceReleaseCamera) {
moduleIndex = ModuleSwitcher.CAPTURE_MODULE_INDEX;
@@ -2246,4 +2246,6 @@ public class CameraActivity extends Activity
public CameraModule getCurrentModule() {
return mCurrentModule;
}
+
+ public SettingsManager getSettingsManager() {return mSettingsManager;}
}
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java
index 1a7811000..0ae9c5ef1 100644
--- a/src/com/android/camera/CaptureModule.java
+++ b/src/com/android/camera/CaptureModule.java
@@ -902,7 +902,7 @@ public class CaptureModule implements CameraModule, PhotoController,
@Override
public void init(CameraActivity activity, View parent) {
mActivity = activity;
- mSettingsManager = SettingsManager.getInstance();
+ mSettingsManager = activity.getSettingsManager();
mSettingsManager.registerListener(this);
mSettingsManager.init();
mFirstPreviewLoaded = false;
diff --git a/src/com/android/camera/CaptureUI.java b/src/com/android/camera/CaptureUI.java
index cf3ca6d3a..69d0572fe 100644
--- a/src/com/android/camera/CaptureUI.java
+++ b/src/com/android/camera/CaptureUI.java
@@ -261,7 +261,7 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
mActivity = activity;
mModule = module;
mRootView = parent;
- mSettingsManager = SettingsManager.getInstance();
+ mSettingsManager = activity.getSettingsManager();
mSettingsManager.registerListener(this);
mActivity.getLayoutInflater().inflate(R.layout.capture_module,
(ViewGroup) mRootView, true);
diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java
index c8f3f8c7b..f4162c79f 100644
--- a/src/com/android/camera/SettingsManager.java
+++ b/src/com/android/camera/SettingsManager.java
@@ -120,7 +120,6 @@ public class SettingsManager implements ListMenu.SettingsListener {
public static final String KEY_SHUTTER_SOUND = "pref_camera2_shutter_sound_key";
private static final String TAG = "SnapCam_SettingsManager";
- private static SettingsManager sInstance;
private ArrayList<CameraCharacteristics> mCharacteristics;
private ArrayList<Listener> mListeners;
private Map<String, Values> mValuesMap;
@@ -133,7 +132,7 @@ public class SettingsManager implements ListMenu.SettingsListener {
private JSONObject mDependency;
private int mCameraId;
- private SettingsManager(Context context) {
+ public SettingsManager(Context context) {
mListeners = new ArrayList<>();
mCharacteristics = new ArrayList<>();
mContext = context;
@@ -173,23 +172,6 @@ public class SettingsManager implements ListMenu.SettingsListener {
mDependency = parseJson("dependency.json");
}
- public static SettingsManager createInstance(Context context) {
- if (sInstance == null) {
- sInstance = new SettingsManager(context);
- }
- return sInstance;
- }
-
- public static SettingsManager getInstance() {
- return sInstance;
- }
-
- public void destroyInstance() {
- if (sInstance != null) {
- sInstance = null;
- }
- }
-
public List<String> getDisabledList() {
List<String> list = new ArrayList<>();
Set<String> keySet = mValuesMap.keySet();