diff options
author | nicolasroard <nicolasroard@google.com> | 2013-02-13 15:51:25 -0800 |
---|---|---|
committer | nicolasroard <nicolasroard@google.com> | 2013-02-13 15:51:25 -0800 |
commit | 147af26e86b7fa8f2d195651e3786c0102346702 (patch) | |
tree | 0880fb966ba971ceb0358dd5216923a69e9700bd /src/com/android | |
parent | da7b84da52579cc967816e11f10acd9d9b3c714b (diff) | |
download | android_packages_apps_Snap-147af26e86b7fa8f2d195651e3786c0102346702.tar.gz android_packages_apps_Snap-147af26e86b7fa8f2d195651e3786c0102346702.tar.bz2 android_packages_apps_Snap-147af26e86b7fa8f2d195651e3786c0102346702.zip |
Fix sync representations
Change-Id: I8b1b159a2350f7ee8bcdc7e71faf82ab5df2755b
Diffstat (limited to 'src/com/android')
3 files changed, 25 insertions, 2 deletions
diff --git a/src/com/android/gallery3d/filtershow/PanelController.java b/src/com/android/gallery3d/filtershow/PanelController.java index 45868eeba..18a9585a6 100644 --- a/src/com/android/gallery3d/filtershow/PanelController.java +++ b/src/com/android/gallery3d/filtershow/PanelController.java @@ -459,7 +459,7 @@ public class PanelController implements OnClickListener { copy.addFilter(filterRepresentation); } else { if (filterRepresentation.allowsMultipleInstances()) { - representation.useParametersFrom(filterRepresentation); + representation.updateTempParametersFrom(filterRepresentation); copy.setHistoryName(filterRepresentation.getName()); } filterRepresentation = representation; diff --git a/src/com/android/gallery3d/filtershow/filters/FilterRepresentation.java b/src/com/android/gallery3d/filtershow/filters/FilterRepresentation.java index 8ac191de7..513cdcdef 100644 --- a/src/com/android/gallery3d/filtershow/filters/FilterRepresentation.java +++ b/src/com/android/gallery3d/filtershow/filters/FilterRepresentation.java @@ -40,6 +40,8 @@ public class FilterRepresentation implements Cloneable { public static final byte TYPE_NORMAL = 5; public static final byte TYPE_TINYPLANET = 6; + public FilterRepresentation mTempRepresentation = null; + public FilterRepresentation(String name) { mName = name; } @@ -107,6 +109,24 @@ public class FilterRepresentation implements Cloneable { public void useParametersFrom(FilterRepresentation a) { } + public synchronized void updateTempParametersFrom(FilterRepresentation representation) { + if (mTempRepresentation == null) { + try { + mTempRepresentation = representation.clone(); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + } else { + mTempRepresentation.useParametersFrom(representation); + } + } + + public synchronized void synchronizeRepresentation() { + if (mTempRepresentation != null) { + useParametersFrom(mTempRepresentation); + } + } + public boolean allowsMultipleInstances() { return false; } @@ -185,4 +205,5 @@ public class FilterRepresentation implements Cloneable { public String getStateRepresentation() { return ""; } + } diff --git a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java index e3594848c..84266c55d 100644 --- a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java +++ b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java @@ -130,7 +130,7 @@ public class ImagePreset { synchronized (mFilters) { int position = getPositionForRepresentation(representation); FilterRepresentation old = mFilters.elementAt(position); - old.useParametersFrom(representation); + old.updateTempParametersFrom(representation); } MasterImage.getImage().invalidatePreview(); } @@ -388,6 +388,7 @@ public class ImagePreset { public Bitmap applyBorder(Bitmap bitmap) { if (mBorder != null && mDoApplyGeometry) { ImageFilter filter = FiltersManager.getManager().getFilterForRepresentation(mBorder); + mBorder.synchronizeRepresentation(); filter.useRepresentation(mBorder); filter.setImagePreset(this); bitmap = filter.apply(bitmap, mScaleFactor, mQuality); @@ -408,6 +409,7 @@ public class ImagePreset { FilterRepresentation representation = null; synchronized (mFilters) { representation = mFilters.elementAt(i); + representation.synchronizeRepresentation(); } ImageFilter filter = FiltersManager.getManager().getFilterForRepresentation(representation); filter.useRepresentation(representation); |