diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2014-06-13 08:35:21 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2014-06-13 08:35:21 -0700 |
commit | 372fcbc333efedafde3aa6df288d498069507861 (patch) | |
tree | 5d62edcc3c843f3e4921e40f172ad5caa767e071 /src/com/android/camera/CameraActivity.java | |
parent | 4c70672842eeda13389ba6ceda315a5986b0b375 (diff) | |
parent | bfdbd64ee7e4bbfead91366ccea218258a8ec845 (diff) | |
download | android_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.java | 43 |
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); } |