diff options
| author | nicolasroard <nicolasroard@google.com> | 2013-08-12 09:25:44 -0700 |
|---|---|---|
| committer | nicolasroard <nicolasroard@google.com> | 2013-08-12 09:27:24 -0700 |
| commit | 8b9cc5f374fa8bded7f84af6ce73123be2754ccc (patch) | |
| tree | 50701692571e870fa8859d90eb8dca36b9aa09db /src/com/android/gallery3d | |
| parent | 55d6abe58c3a7574a5d76c68ec5c21848848e399 (diff) | |
| download | android_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/gallery3d')
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) { |
