summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/CameraActivity.java
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2014-06-13 08:35:21 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2014-06-13 08:35:21 -0700
commit372fcbc333efedafde3aa6df288d498069507861 (patch)
tree5d62edcc3c843f3e4921e40f172ad5caa767e071 /src/com/android/camera/CameraActivity.java
parent4c70672842eeda13389ba6ceda315a5986b0b375 (diff)
parentbfdbd64ee7e4bbfead91366ccea218258a8ec845 (diff)
downloadandroid_packages_apps_Snap-372fcbc333efedafde3aa6df288d498069507861.tar.gz
android_packages_apps_Snap-372fcbc333efedafde3aa6df288d498069507861.tar.bz2
android_packages_apps_Snap-372fcbc333efedafde3aa6df288d498069507861.zip
Merge "Camera: Mem-leak"
Diffstat (limited to 'src/com/android/camera/CameraActivity.java')
-rw-r--r--src/com/android/camera/CameraActivity.java43
1 files changed, 41 insertions, 2 deletions
diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java
index 168c9064a..33fe20ae3 100644
--- a/src/com/android/camera/CameraActivity.java
+++ b/src/com/android/camera/CameraActivity.java
@@ -144,9 +144,9 @@ public class CameraActivity extends Activity
private static final int SUPPORT_ALL = 0xffffffff;
/** This data adapter is used by FilmStripView. */
- private LocalDataAdapter mDataAdapter;
+ private LocalDataAdapter mDataAdapter = null;
/** This data adapter represents the real local camera data. */
- private LocalDataAdapter mWrappedDataAdapter;
+ private LocalDataAdapter mWrappedDataAdapter = null;
private PanoramaStitchingManager mPanoramaManager;
private PlaceholderManager mPlaceholderManager;
@@ -1239,6 +1239,35 @@ public class CameraActivity extends Activity
@Override
public void onResume() {
+ if (!mSecureCamera) {
+ if (mWrappedDataAdapter == null) {
+ mWrappedDataAdapter = new FixedFirstDataAdapter(
+ new CameraDataAdapter(new ColorDrawable(
+ getResources().getColor(R.color.photo_placeholder))),
+ mCameraPreviewData);
+ }
+ mDataAdapter = mWrappedDataAdapter;
+ mFilmStripView.setDataAdapter(mDataAdapter);
+ if (!isCaptureIntent()) {
+ mDataAdapter.requestLoad(getContentResolver());
+ }
+ } else {
+ ImageView v = (ImageView) getLayoutInflater().inflate(
+ R.layout.secure_album_placeholder, null);
+ if (mDataAdapter == null) {
+ mDataAdapter = new FixedLastDataAdapter(
+ mWrappedDataAdapter,
+ new SimpleViewData(
+ v,
+ v.getDrawable().getIntrinsicWidth(),
+ v.getDrawable().getIntrinsicHeight(),
+ 0, 0));
+ }
+ // Flush out all the original data.
+ mDataAdapter.flush();
+ mFilmStripView.setDataAdapter(mDataAdapter);
+ }
+
// TODO: Handle this in OrientationManager.
// Auto-rotate off
if (Settings.System.getInt(getContentResolver(),
@@ -1299,12 +1328,22 @@ public class CameraActivity extends Activity
@Override
protected void onStop() {
super.onStop();
+ if (mDataAdapter != null) {
+ mDataAdapter.removeData(CameraActivity.this,-1);
+ }
+ mDataAdapter = null;
+ mWrappedDataAdapter = null;
mPanoramaViewHelper.onStop();
unbindMediaSaveService();
}
@Override
public void onDestroy() {
+
+ if (mDataAdapter != null) {
+ mDataAdapter.removeData(CameraActivity.this,-1);
+ }
+
if (mSecureCamera) {
unregisterReceiver(mScreenOffReceiver);
}