summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-08-30 05:51:30 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2016-08-30 05:51:30 -0700
commit835ee3d00a1c48492224ec76247e91e98b128339 (patch)
tree789771fcbba3391c0db9f33cbb595334da9386c4 /src
parent656103b3cd13b479664dcb374236b5b897036d1b (diff)
parentdb643b469ac298b3a388efd41da270f29b6eb59d (diff)
downloadandroid_packages_apps_Gallery2-835ee3d00a1c48492224ec76247e91e98b128339.tar.gz
android_packages_apps_Gallery2-835ee3d00a1c48492224ec76247e91e98b128339.tar.bz2
android_packages_apps_Gallery2-835ee3d00a1c48492224ec76247e91e98b128339.zip
Merge "SnapdragonGallery: Fix gallery memory leak" into android_ui.lnx.2.1-dev
Diffstat (limited to 'src')
-rwxr-xr-x[-rw-r--r--]src/com/android/gallery3d/filtershow/filters/ImageFilter.java33
-rwxr-xr-x[-rw-r--r--]src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamFusion.java11
-rwxr-xr-x[-rw-r--r--]src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamSketch.java11
-rwxr-xr-x[-rw-r--r--]src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamera.java12
-rwxr-xr-x[-rw-r--r--]src/com/android/gallery3d/filtershow/filters/ImageFilterTruePortrait.java12
-rwxr-xr-x[-rw-r--r--]src/com/android/gallery3d/filtershow/filters/SeeStraightActs.java12
-rwxr-xr-x[-rw-r--r--]src/com/android/gallery3d/filtershow/filters/TrueScannerActs.java38
-rwxr-xr-x[-rw-r--r--]src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java2
8 files changed, 53 insertions, 78 deletions
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilter.java b/src/com/android/gallery3d/filtershow/filters/ImageFilter.java
index 1a32e46e0..4918bee86 100644..100755
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilter.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilter.java
@@ -36,6 +36,8 @@ public abstract class ImageFilter implements Cloneable {
// feedback. Remove this when filters actually work in low memory
// situations.
protected static Activity sActivity = null;
+ private static Toast sToast = null;
+ private String lastMsg;
public static void setActivityForMemoryToasts(Activity activity) {
sActivity = activity;
@@ -43,21 +45,42 @@ public abstract class ImageFilter implements Cloneable {
public static void resetStatics() {
sActivity = null;
+ if (null != sToast) {
+ sToast.cancel();
+ }
+ sToast = null;
}
- public void freeResources() {}
-
- public void displayLowMemoryToast() {
+ void showToast(String msg, int duration) {
if (sActivity != null) {
sActivity.runOnUiThread(new Runnable() {
+ @Override
public void run() {
- Toast.makeText(sActivity, "Memory too low for filter " + getName() +
- ", please file a bug report", Toast.LENGTH_SHORT).show();
+ if (sActivity != null && (!msg.equals(lastMsg) || sToast == null)) {
+ sToast = Toast.makeText(sActivity.getApplicationContext(), msg, duration);
+ lastMsg = msg;
+ }
+ if (sToast != null) {
+ sToast.show();
+ }
}
});
}
}
+ void showToast(int resID, int duration) {
+ if (sActivity != null) {
+ showToast(sActivity.getResources().getString(resID), duration);
+ }
+ }
+
+ public void freeResources() {}
+
+ public void displayLowMemoryToast() {
+ showToast("Memory too low for filter " + getName() +
+ ", please file a bug report", Toast.LENGTH_SHORT);
+ }
+
public void setName(String name) {
mName = name;
}
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamFusion.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamFusion.java
index 9d9b2b817..df34fedbe 100644..100755
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamFusion.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamFusion.java
@@ -52,7 +52,6 @@ import com.android.gallery3d.filtershow.tools.DualCameraNativeEngine;
public class ImageFilterDualCamFusion extends ImageFilter {
private static final String TAG = ImageFilterDualCamFusion.class.getSimpleName();
- private static Toast sSegmentToast;
private FilterDualCamFusionRepresentation mParameters;
private Paint mPaint = new Paint();
@@ -130,15 +129,7 @@ public class ImageFilterDualCamFusion extends ImageFilter {
if(result == false) {
Log.e(TAG, "Imagelib API failed");
- sActivity.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- if(sSegmentToast == null) {
- sSegmentToast = Toast.makeText(sActivity, R.string.dualcam_no_segment_toast, Toast.LENGTH_SHORT);
- }
- sSegmentToast.show();
- }
- });
+ showToast(R.string.dualcam_no_segment_toast, Toast.LENGTH_SHORT);
return bitmap;
} else {
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamSketch.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamSketch.java
index 8d61a32c3..97712db75 100644..100755
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamSketch.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamSketch.java
@@ -51,7 +51,6 @@ import com.android.gallery3d.filtershow.tools.DualCameraNativeEngine;
public class ImageFilterDualCamSketch extends ImageFilter {
private static final String TAG = ImageFilterDualCamSketch.class.getSimpleName();
- private static Toast sSegmentToast;
private FilterDualCamSketchRepresentation mParameters;
private Paint mPaint = new Paint();
@@ -122,15 +121,7 @@ public class ImageFilterDualCamSketch extends ImageFilter {
if(result == false) {
Log.e(TAG, "Imagelib API failed");
- sActivity.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- if(sSegmentToast == null) {
- sSegmentToast = Toast.makeText(sActivity, R.string.dualcam_no_segment_toast, Toast.LENGTH_SHORT);
- }
- sSegmentToast.show();
- }
- });
+ showToast(R.string.dualcam_no_segment_toast, Toast.LENGTH_SHORT);
return bitmap;
} else {
mPaint.reset();
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamera.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamera.java
index fa38b0ecb..49728f84c 100644..100755
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamera.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterDualCamera.java
@@ -51,7 +51,6 @@ import com.android.gallery3d.filtershow.tools.DualCameraNativeEngine;
public class ImageFilterDualCamera extends ImageFilter {
private static final String TAG = ImageFilterDualCamera.class.getSimpleName();
- private static Toast sSegmentToast;
private FilterDualCamBasicRepresentation mParameters;
private Paint mPaint = new Paint();
@@ -135,16 +134,7 @@ public class ImageFilterDualCamera extends ImageFilter {
if(result == false) {
Log.e(TAG, "Imagelib API failed");
- sActivity.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- if(sSegmentToast == null) {
- sSegmentToast = Toast.makeText(sActivity, R.string.dualcam_no_segment_toast, Toast.LENGTH_SHORT);
- }
- sSegmentToast.show();
- }
- });
-
+ showToast(R.string.dualcam_no_segment_toast, Toast.LENGTH_SHORT);
return bitmap;
} else {
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterTruePortrait.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterTruePortrait.java
index 86a2a7404..f070bfc30 100644..100755
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterTruePortrait.java
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterTruePortrait.java
@@ -52,7 +52,6 @@ import com.android.gallery3d.filtershow.tools.TruePortraitNativeEngine.EffectTyp
public class ImageFilterTruePortrait extends ImageFilter {
private static final String TAG = "ImageFilterTruePortrait";
- private static Toast sSegmentToast;
private FilterRepresentation mParameters;
private Paint mPaint = new Paint();
@@ -115,16 +114,7 @@ public class ImageFilterTruePortrait extends ImageFilter {
if(result == false) {
Log.e(TAG, "Imagelib API failed");
- sActivity.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- if(sSegmentToast == null) {
- sSegmentToast = Toast.makeText(sActivity, "No Faces Found", Toast.LENGTH_SHORT);
- }
- sSegmentToast.show();
- }
- });
-
+ showToast("No Faces Found", Toast.LENGTH_SHORT);
return bitmap;
} else {
diff --git a/src/com/android/gallery3d/filtershow/filters/SeeStraightActs.java b/src/com/android/gallery3d/filtershow/filters/SeeStraightActs.java
index 047c036f7..f2eb81bc5 100644..100755
--- a/src/com/android/gallery3d/filtershow/filters/SeeStraightActs.java
+++ b/src/com/android/gallery3d/filtershow/filters/SeeStraightActs.java
@@ -100,22 +100,14 @@ public class SeeStraightActs extends SimpleImageFilter {
return bitmap;
if(!checkSize(width, height)) {
- sActivity.runOnUiThread(new Runnable() {
- public void run() {
- Toast.makeText(sActivity, sActivity.getResources().getString(R.string.seestraight_input_image_is_small), Toast.LENGTH_SHORT).show();
- }
- });
+ showToast(R.string.seestraight_input_image_is_small, Toast.LENGTH_SHORT);
return bitmap;
}
Bitmap dstBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
int[] outputRoi = processImage(width, height, bitmap, dstBitmap);
if(outputRoi == null) {
- sActivity.runOnUiThread(new Runnable() {
- public void run() {
- Toast.makeText(sActivity, sActivity.getResources().getString(R.string.seestraight_process_fail), Toast.LENGTH_SHORT).show();
- }
- });
+ showToast(R.string.seestraight_process_fail, Toast.LENGTH_SHORT);
return bitmap;
}
dstBitmap = Bitmap.createBitmap(dstBitmap, outputRoi[0], outputRoi[1], outputRoi[2], outputRoi[3]);
diff --git a/src/com/android/gallery3d/filtershow/filters/TrueScannerActs.java b/src/com/android/gallery3d/filtershow/filters/TrueScannerActs.java
index da6e538ab..0a59a65c5 100644..100755
--- a/src/com/android/gallery3d/filtershow/filters/TrueScannerActs.java
+++ b/src/com/android/gallery3d/filtershow/filters/TrueScannerActs.java
@@ -103,23 +103,27 @@ public class TrueScannerActs extends SimpleImageFilter {
}
private void showProgressDialog() {
- sActivity.runOnUiThread(new Runnable() {
- public void run() {
- mProgressDialog = ProgressDialog.show(sActivity,"", "Processing...", true, false);
- mProgressDialog.show();
- }
- });
+ if (null != sActivity) {
+ sActivity.runOnUiThread(new Runnable() {
+ public void run() {
+ mProgressDialog = ProgressDialog.show(sActivity, "", "Processing...", true, false);
+ mProgressDialog.show();
+ }
+ });
+ }
}
private void dismissProgressDialog() {
- sActivity.runOnUiThread(new Runnable() {
- public void run() {
- if (mProgressDialog != null && mProgressDialog.isShowing()) {
- mProgressDialog.dismiss();
- mProgressDialog = null;
+ if (null != sActivity) {
+ sActivity.runOnUiThread(new Runnable() {
+ public void run() {
+ if (mProgressDialog != null && mProgressDialog.isShowing()) {
+ mProgressDialog.dismiss();
+ mProgressDialog = null;
+ }
}
- }
- });
+ });
+ }
}
@Override
@@ -132,13 +136,7 @@ public class TrueScannerActs extends SimpleImageFilter {
return bitmap;
}
if(!acquireLock(true)) {
- sActivity.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- Toast.makeText(sActivity, "Still processing the previous request... ", Toast.LENGTH_LONG).show();
- }
- });
-
+ showToast("Still processing the previous request... ", Toast.LENGTH_LONG);
return bitmap;
}
new Throwable().printStackTrace();
diff --git a/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java b/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java
index d42834457..3948b6eea 100644..100755
--- a/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java
+++ b/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java
@@ -184,8 +184,8 @@ public class ProcessingService extends Service {
@Override
public void onDestroy() {
- tearDownPipeline();
mProcessingTaskController.quit();
+ tearDownPipeline();
MasterImage.setMaster(null);
}