summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRuben Brunk <rubenbrunk@google.com>2013-03-11 18:37:55 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-03-11 18:37:56 +0000
commit7b5e88bf8ce55d9b5bd757eada579422cee2a246 (patch)
treec9bb00301298958ffbce38a95cffbeab55b84f23 /src
parent28bf7ac129344ca6306d83fc114759c9cf923806 (diff)
parent6320d90fb41fe1276a02b17fa27a660e76f21ba8 (diff)
downloadandroid_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')
-rw-r--r--src/com/android/gallery3d/filtershow/FilterShowActivity.java28
-rw-r--r--src/com/android/gallery3d/filtershow/cache/ImageLoader.java11
-rw-r--r--src/com/android/gallery3d/filtershow/tools/BitmapTask.java19
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);
}
}