summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authornicolasroard <nicolasroard@google.com>2013-02-13 15:51:25 -0800
committernicolasroard <nicolasroard@google.com>2013-02-13 15:51:25 -0800
commit33d614f5c2ba3526797286176c7898a32786486f (patch)
tree0f1006765cf8f58a0716ed2b766db0f84429db04 /src
parent219bb7a4d8408cc27344e92fd9cfec371a0f861b (diff)
downloadandroid_packages_apps_Snap-33d614f5c2ba3526797286176c7898a32786486f.tar.gz
android_packages_apps_Snap-33d614f5c2ba3526797286176c7898a32786486f.tar.bz2
android_packages_apps_Snap-33d614f5c2ba3526797286176c7898a32786486f.zip
Fix sync representations
Change-Id: I8b1b159a2350f7ee8bcdc7e71faf82ab5df2755b
Diffstat (limited to 'src')
-rw-r--r--src/com/android/gallery3d/filtershow/filters/FilterRepresentation.java21
-rw-r--r--src/com/android/gallery3d/filtershow/presets/ImagePreset.java4
2 files changed, 24 insertions, 1 deletions
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);