summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
authornicolasroard <nicolasroard@google.com>2013-08-12 09:25:44 -0700
committernicolasroard <nicolasroard@google.com>2013-08-12 09:27:24 -0700
commit8b9cc5f374fa8bded7f84af6ce73123be2754ccc (patch)
tree50701692571e870fa8859d90eb8dca36b9aa09db /src/com/android
parent55d6abe58c3a7574a5d76c68ec5c21848848e399 (diff)
downloadandroid_packages_apps_Gallery2-8b9cc5f374fa8bded7f84af6ce73123be2754ccc.tar.gz
android_packages_apps_Gallery2-8b9cc5f374fa8bded7f84af6ce73123be2754ccc.tar.bz2
android_packages_apps_Gallery2-8b9cc5f374fa8bded7f84af6ce73123be2754ccc.zip
Fix for wrong bitmap picked after geometry change
Change-Id: I48d7892c761bb1d8a83553786367aa11d1841fb5
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/gallery3d/filtershow/editors/Editor.java5
-rw-r--r--src/com/android/gallery3d/filtershow/imageshow/ImageShow.java2
-rw-r--r--src/com/android/gallery3d/filtershow/imageshow/MasterImage.java38
-rw-r--r--src/com/android/gallery3d/filtershow/pipeline/CacheProcessing.java12
-rw-r--r--src/com/android/gallery3d/filtershow/pipeline/FilterEnvironment.java10
5 files changed, 35 insertions, 32 deletions
diff --git a/src/com/android/gallery3d/filtershow/editors/Editor.java b/src/com/android/gallery3d/filtershow/editors/Editor.java
index 9e7eb0c6b..5651970af 100644
--- a/src/com/android/gallery3d/filtershow/editors/Editor.java
+++ b/src/com/android/gallery3d/filtershow/editors/Editor.java
@@ -242,10 +242,9 @@ public class Editor implements OnSeekBarChangeListener, SwapButton.SwapButtonLis
if (mChangesGeometry) {
// Regenerate both the filtered and the geometry-only bitmaps
MasterImage.getImage().resetGeometryImages();
- } else {
- // Regenerate only the filtered bitmap.
- MasterImage.getImage().invalidateFiltersOnly();
}
+ // Regenerate the filtered bitmap.
+ MasterImage.getImage().invalidateFiltersOnly();
preset.fillImageStateAdapter(MasterImage.getImage().getState());
}
diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java b/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java
index bf30b21d1..38f465066 100644
--- a/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java
+++ b/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java
@@ -256,7 +256,7 @@ public class ImageShow extends View implements OnGestureListener,
}
public void resetImageCaches(ImageShow caller) {
- MasterImage.getImage().resetGeometryImages();
+ MasterImage.getImage().invalidatePreview();
}
public Bitmap getFiltersOnlyImage() {
diff --git a/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java b/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java
index 9880c41d9..2d84f40f8 100644
--- a/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java
+++ b/src/com/android/gallery3d/filtershow/imageshow/MasterImage.java
@@ -332,27 +332,23 @@ public class MasterImage implements RenderingRequestCaller {
}
public void resetGeometryImages() {
- if (mGeometryOnlyPreset == null) {
- ImagePreset newPreset = new ImagePreset(mPreset);
- newPreset.setDoApplyFilters(false);
- newPreset.setDoApplyGeometry(true);
- if (mGeometryOnlyPreset == null
- || !newPreset.same(mGeometryOnlyPreset)) {
- mGeometryOnlyPreset = newPreset;
- RenderingRequest.post(mActivity, getOriginalBitmapLarge(),
- mGeometryOnlyPreset, RenderingRequest.GEOMETRY_RENDERING, this);
- }
- }
- if (mFiltersOnlyPreset == null) {
- ImagePreset newPreset = new ImagePreset(mPreset);
- newPreset.setDoApplyFilters(true);
- newPreset.setDoApplyGeometry(false);
- if (mFiltersOnlyPreset == null
- || !newPreset.same(mFiltersOnlyPreset)) {
- mFiltersOnlyPreset = newPreset;
- RenderingRequest.post(mActivity, MasterImage.getImage().getOriginalBitmapLarge(),
- mFiltersOnlyPreset, RenderingRequest.FILTERS_RENDERING, this);
- }
+ ImagePreset newPresetGeometryOnly = new ImagePreset(mPreset);
+ newPresetGeometryOnly.setDoApplyFilters(false);
+ newPresetGeometryOnly.setDoApplyGeometry(true);
+ if (mGeometryOnlyPreset == null
+ || !newPresetGeometryOnly.same(mGeometryOnlyPreset)) {
+ mGeometryOnlyPreset = newPresetGeometryOnly;
+ RenderingRequest.post(mActivity, getOriginalBitmapLarge(),
+ mGeometryOnlyPreset, RenderingRequest.GEOMETRY_RENDERING, this);
+ }
+ ImagePreset newPresetFiltersOnly = new ImagePreset(mPreset);
+ newPresetFiltersOnly.setDoApplyFilters(true);
+ newPresetFiltersOnly.setDoApplyGeometry(false);
+ if (mFiltersOnlyPreset == null
+ || !newPresetFiltersOnly.same(mFiltersOnlyPreset)) {
+ mFiltersOnlyPreset = newPresetFiltersOnly;
+ RenderingRequest.post(mActivity, MasterImage.getImage().getOriginalBitmapLarge(),
+ mFiltersOnlyPreset, RenderingRequest.FILTERS_RENDERING, this);
}
}
diff --git a/src/com/android/gallery3d/filtershow/pipeline/CacheProcessing.java b/src/com/android/gallery3d/filtershow/pipeline/CacheProcessing.java
index 7abeee723..edd07d226 100644
--- a/src/com/android/gallery3d/filtershow/pipeline/CacheProcessing.java
+++ b/src/com/android/gallery3d/filtershow/pipeline/CacheProcessing.java
@@ -116,7 +116,7 @@ public class CacheProcessing {
FilterEnvironment environment) {
if (filters.size() == 0) {
- return originalBitmap;
+ return environment.getBitmapCopy(originalBitmap);
}
if (DEBUG) {
@@ -172,12 +172,22 @@ public class CacheProcessing {
for (int i = findBaseImageIndex; i < mSteps.size(); i++) {
if (i == -1 || cacheBitmap == null) {
cacheBitmap = environment.getBitmapCopy(originalBitmap);
+ if (DEBUG) {
+ Log.v(LOGTAG, "i: " + i + " cacheBitmap: " + cacheBitmap + " w: "
+ + cacheBitmap.getWidth() + " h: " + cacheBitmap.getHeight()
+ + " got from original Bitmap: " + originalBitmap + " w: "
+ + originalBitmap.getWidth() + " h: " + originalBitmap.getHeight());
+ }
if (i == -1) {
continue;
}
}
CacheStep step = mSteps.elementAt(i);
if (step.cache == null) {
+ if (DEBUG) {
+ Log.v(LOGTAG, "i: " + i + " get new copy for cacheBitmap "
+ + cacheBitmap + " apply...");
+ }
cacheBitmap = environment.getBitmapCopy(cacheBitmap);
cacheBitmap = step.apply(environment, cacheBitmap);
environment.cache(step.cache);
diff --git a/src/com/android/gallery3d/filtershow/pipeline/FilterEnvironment.java b/src/com/android/gallery3d/filtershow/pipeline/FilterEnvironment.java
index c5c665360..b540d96dd 100644
--- a/src/com/android/gallery3d/filtershow/pipeline/FilterEnvironment.java
+++ b/src/com/android/gallery3d/filtershow/pipeline/FilterEnvironment.java
@@ -17,15 +17,11 @@
package com.android.gallery3d.filtershow.pipeline;
import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
import android.graphics.Canvas;
-import android.graphics.Matrix;
-import android.graphics.Paint;
import android.support.v8.renderscript.Allocation;
import com.android.gallery3d.filtershow.filters.FilterRepresentation;
import com.android.gallery3d.filtershow.filters.FilterUserPresetRepresentation;
-import com.android.gallery3d.filtershow.filters.FilterRotateRepresentation.Rotation;
import com.android.gallery3d.filtershow.filters.FiltersManagerInterface;
import com.android.gallery3d.filtershow.filters.ImageFilter;
@@ -82,7 +78,9 @@ public class FilterEnvironment {
if (ref != null) {
bitmap = ref.get();
}
- if (bitmap == null) {
+ if (bitmap == null
+ || bitmap.getWidth() != w
+ || bitmap.getHeight() != h) {
bitmap = Bitmap.createBitmap(
w, h, Bitmap.Config.ARGB_8888);
}
@@ -97,7 +95,7 @@ public class FilterEnvironment {
}
private Long calcKey(long w, long h) {
- return (w << 32) | (h << 32);
+ return (w << 32) | h;
}
public void setImagePreset(ImagePreset imagePreset) {