Merge "Fix a mistake of CameraAgentFactory's recycle();" am: c7a2095139 am: 3a06cce41f
am: 4d50f1dec8

Change-Id: I3f8839b5a4b00bf2818f07fede3a301389f17e49
diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java
index 3eceb8f..110ce16 100644
--- a/src/com/android/camera/CameraActivity.java
+++ b/src/com/android/camera/CameraActivity.java
@@ -1503,7 +1503,9 @@
         // version.
         profile.mark();
         try {
-            (new PictureSizeLoader(mAppContext)).computePictureSizes();
+            PictureSizeLoader pictureSizeLoader = new PictureSizeLoader(mAppContext);
+            pictureSizeLoader.computePictureSizes();
+            pictureSizeLoader.release();
         } catch (AssertionError e) {
             Log.e(TAG, "Creating camera controller failed.", e);
             mFatalErrorHandler.onGenericCameraAccessFailure();
diff --git a/src/com/android/camera/settings/AppUpgrader.java b/src/com/android/camera/settings/AppUpgrader.java
index 92bd953..930c3e2 100644
--- a/src/com/android/camera/settings/AppUpgrader.java
+++ b/src/com/android/camera/settings/AppUpgrader.java
@@ -145,6 +145,7 @@
             // chooser if applicable.
             settingsManager.remove(SettingsManager.SCOPE_GLOBAL,
                     Keys.KEY_STARTUP_MODULE_INDEX);
+            CameraAgentFactory.recycle(CameraAgentFactory.CameraApi.API_1);
         }
 
         if (lastVersion < CAMERA_MODULE_SETTINGS_FILES_RENAMED_VERSION) {
diff --git a/src/com/android/camera/settings/CameraSettingsActivity.java b/src/com/android/camera/settings/CameraSettingsActivity.java
index 2d32a54..0429092 100644
--- a/src/com/android/camera/settings/CameraSettingsActivity.java
+++ b/src/com/android/camera/settings/CameraSettingsActivity.java
@@ -180,6 +180,7 @@
             mInfos = CameraAgentFactory
                     .getAndroidCameraAgent(context, CameraAgentFactory.CameraApi.API_1)
                     .getCameraDeviceInfo();
+            CameraAgentFactory.recycle(CameraAgentFactory.CameraApi.API_1);
         }
 
         @Override
@@ -498,6 +499,7 @@
             }
             PictureSizeLoader loader = new PictureSizeLoader(getActivity().getApplicationContext());
             mPictureSizes = loader.computePictureSizes();
+            loader.release();
         }
 
         /**
diff --git a/src/com/android/camera/settings/PictureSizeLoader.java b/src/com/android/camera/settings/PictureSizeLoader.java
index a3cb49b..582d77f 100644
--- a/src/com/android/camera/settings/PictureSizeLoader.java
+++ b/src/com/android/camera/settings/PictureSizeLoader.java
@@ -97,6 +97,10 @@
         mCachedOnly = cachedOnly;
     }
 
+    public void release(){
+        CameraAgentFactory.recycle(CameraAgentFactory.CameraApi.API_1);
+    }
+
     /**
      * Computes the list of picture sizes that should be displayed by settings.
      * <p>