diff options
author | Ruben Brunk <rubenbrunk@google.com> | 2013-03-11 09:53:16 -0700 |
---|---|---|
committer | Ruben Brunk <rubenbrunk@google.com> | 2013-03-11 11:19:39 -0700 |
commit | 6320d90fb41fe1276a02b17fa27a660e76f21ba8 (patch) | |
tree | 59050c84f9aa98a0eed6f2f61586bae355402cc5 /src/com/android | |
parent | 976e017fa90c7134ef62cd69f61bbc08315b6042 (diff) | |
download | android_packages_apps_Snap-6320d90fb41fe1276a02b17fa27a660e76f21ba8.tar.gz android_packages_apps_Snap-6320d90fb41fe1276a02b17fa27a660e76f21ba8.tar.bz2 android_packages_apps_Snap-6320d90fb41fe1276a02b17fa27a660e76f21ba8.zip |
Clear Gallery's bitmap pool on photo editor start. Minor refactoring.
Change-Id: I02e29bf6cfd85a9cecd3850f8828cccae91badd2
Diffstat (limited to 'src/com/android')
3 files changed, 42 insertions, 16 deletions
diff --git a/src/com/android/gallery3d/filtershow/FilterShowActivity.java b/src/com/android/gallery3d/filtershow/FilterShowActivity.java index e36a3841e..d6a49ebe5 100644 --- a/src/com/android/gallery3d/filtershow/FilterShowActivity.java +++ b/src/com/android/gallery3d/filtershow/FilterShowActivity.java @@ -91,6 +91,7 @@ import com.android.gallery3d.filtershow.ui.FilterIconButton; import com.android.gallery3d.filtershow.ui.FramedTextButton; import com.android.gallery3d.filtershow.ui.Spline; import com.android.gallery3d.util.GalleryUtils; +import com.android.photos.data.GalleryBitmapPool; import java.io.File; import java.io.IOException; @@ -146,6 +147,8 @@ public class FilterShowActivity extends Activity implements OnItemClickListener, public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + clearGalleryBitmapPoolInBackground(); + setupMasterImage(); setDefaultValues(); fillEditors(); @@ -508,6 +511,24 @@ public class FilterShowActivity extends Activity implements OnItemClickListener, } + void clearGalleryBitmapPoolInBackground() { + BitmapTask.Callbacks<Object, Object> cb = new BitmapTask.Callbacks<Object, Object>() { + @Override + public void onComplete(Object result) {} + + @Override + public void onCancel() {} + + @Override + public Object onExecute(Object param) { + // Free memory held in Gallery's Bitmap pool. May be O(n) for n bitmaps. + GalleryBitmapPool.getInstance().clear(); + return null; + } + }; + (new BitmapTask<Object, Object>(cb)).execute(0); + } + private void fillButtonIcons() { Bitmap bmap = mImageLoader.getOriginalBitmapSmall(); if (bmap != null && bmap.getWidth() > 0 && bmap.getHeight() > 0) { @@ -1121,7 +1142,7 @@ public class FilterShowActivity extends Activity implements OnItemClickListener, void setWallpaperInBackground(final Bitmap bmap) { Toast.makeText(this, R.string.setting_wallpaper, Toast.LENGTH_LONG).show(); - BitmapTask.Callbacks<FilterShowActivity> cb = new BitmapTask.Callbacks<FilterShowActivity>() { + BitmapTask.Callbacks<FilterShowActivity, Bitmap> cb = new BitmapTask.Callbacks<FilterShowActivity, Bitmap>() { @Override public void onComplete(Bitmap result) {} @@ -1130,6 +1151,9 @@ public class FilterShowActivity extends Activity implements OnItemClickListener, @Override public Bitmap onExecute(FilterShowActivity param) { + if (param == null) { + return null; + } try { WallpaperManager.getInstance(param).setBitmap(bmap); } catch (IOException e) { @@ -1138,7 +1162,7 @@ public class FilterShowActivity extends Activity implements OnItemClickListener, return null; } }; - (new BitmapTask<FilterShowActivity>(cb)).execute(this); + (new BitmapTask<FilterShowActivity, Bitmap>(cb)).execute(this); } public void done() { diff --git a/src/com/android/gallery3d/filtershow/cache/ImageLoader.java b/src/com/android/gallery3d/filtershow/cache/ImageLoader.java index 6cf462269..08ed40311 100644 --- a/src/com/android/gallery3d/filtershow/cache/ImageLoader.java +++ b/src/com/android/gallery3d/filtershow/cache/ImageLoader.java @@ -520,7 +520,7 @@ public class ImageLoader { preset.setQuality(ImagePreset.QUALITY_FINAL); preset.setScaleFactor(1.0f); - BitmapTask.Callbacks<ImagePreset> cb = new BitmapTask.Callbacks<ImagePreset>() { + BitmapTask.Callbacks<ImagePreset, Bitmap> cb = new BitmapTask.Callbacks<ImagePreset, Bitmap>() { @Override public void onComplete(Bitmap result) { @@ -570,7 +570,7 @@ public class ImageLoader { } }; - (new BitmapTask<ImagePreset>(cb)).execute(preset); + (new BitmapTask<ImagePreset, Bitmap>(cb)).execute(preset); } private String getFileExtension(String requestFormat) { @@ -604,7 +604,7 @@ public class ImageLoader { final InterruptableOutputStream ios = new InterruptableOutputStream(out); - BitmapTask.Callbacks<Bitmap> cb = new BitmapTask.Callbacks<Bitmap>() { + BitmapTask.Callbacks<Bitmap, Bitmap> cb = new BitmapTask.Callbacks<Bitmap, Bitmap>() { @Override public void onComplete(Bitmap result) { @@ -618,6 +618,9 @@ public class ImageLoader { @Override public Bitmap onExecute(Bitmap param) { + if (param == null) { + return null; + } CompressFormat cf = convertExtensionToCompressFormat(getFileExtension(outputFormat)); param.compress(cf, DEFAULT_COMPRESS_QUALITY, ios); Utils.closeSilently(ios); @@ -625,7 +628,7 @@ public class ImageLoader { } }; - (new BitmapTask<Bitmap>(cb)).execute(bmap); + (new BitmapTask<Bitmap, Bitmap>(cb)).execute(bmap); } public void setAdapter(HistoryAdapter adapter) { diff --git a/src/com/android/gallery3d/filtershow/tools/BitmapTask.java b/src/com/android/gallery3d/filtershow/tools/BitmapTask.java index 62801c1f2..53864a225 100644 --- a/src/com/android/gallery3d/filtershow/tools/BitmapTask.java +++ b/src/com/android/gallery3d/filtershow/tools/BitmapTask.java @@ -16,23 +16,22 @@ package com.android.gallery3d.filtershow.tools; -import android.graphics.Bitmap; import android.os.AsyncTask; /** - * Asynchronous task filtering or doign I/O with bitmaps. + * Asynchronous task wrapper class for doing Bitmap I/O. */ -public class BitmapTask <T> extends AsyncTask<T, Void, Bitmap> { +public class BitmapTask <T, K> extends AsyncTask<T, Void, K> { - private Callbacks<T> mCallbacks; + private Callbacks<T, K> mCallbacks; private static final String LOGTAG = "BitmapTask"; - public BitmapTask(Callbacks<T> callbacks) { + public BitmapTask(Callbacks<T, K> callbacks) { mCallbacks = callbacks; } @Override - protected Bitmap doInBackground(T... params) { + protected K doInBackground(T... params) { if (params == null || mCallbacks == null) { return null; } @@ -40,7 +39,7 @@ public class BitmapTask <T> extends AsyncTask<T, Void, Bitmap> { } @Override - protected void onPostExecute(Bitmap result) { + protected void onPostExecute(K result) { if (mCallbacks == null) { return; } @@ -58,11 +57,11 @@ public class BitmapTask <T> extends AsyncTask<T, Void, Bitmap> { /** * Callbacks for the asynchronous task. */ - public interface Callbacks<P> { - void onComplete(Bitmap result); + public interface Callbacks<P, J> { + void onComplete(J result); void onCancel(); - Bitmap onExecute(P param); + J onExecute(P param); } } |