diff options
author | Ruben Brunk <rubenbrunk@google.com> | 2013-03-11 18:37:55 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-03-11 18:37:56 +0000 |
commit | 7b5e88bf8ce55d9b5bd757eada579422cee2a246 (patch) | |
tree | c9bb00301298958ffbce38a95cffbeab55b84f23 /src | |
parent | 28bf7ac129344ca6306d83fc114759c9cf923806 (diff) | |
parent | 6320d90fb41fe1276a02b17fa27a660e76f21ba8 (diff) | |
download | android_packages_apps_Snap-7b5e88bf8ce55d9b5bd757eada579422cee2a246.tar.gz android_packages_apps_Snap-7b5e88bf8ce55d9b5bd757eada579422cee2a246.tar.bz2 android_packages_apps_Snap-7b5e88bf8ce55d9b5bd757eada579422cee2a246.zip |
Merge "Clear Gallery's bitmap pool on photo editor start. Minor refactoring." into gb-ub-photos-bryce
Diffstat (limited to 'src')
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 1c7c0642a..9b1e92cd8 100644 --- a/src/com/android/gallery3d/filtershow/FilterShowActivity.java +++ b/src/com/android/gallery3d/filtershow/FilterShowActivity.java @@ -86,6 +86,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; @@ -141,6 +142,8 @@ public class FilterShowActivity extends Activity implements OnItemClickListener, public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + clearGalleryBitmapPoolInBackground(); + setupMasterImage(); setDefaultValues(); fillEditors(); @@ -512,6 +515,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) { @@ -1125,7 +1146,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) {} @@ -1134,6 +1155,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) { @@ -1142,7 +1166,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); } } |