From 750798dbb099954b365beedffbc04ee573d11209 Mon Sep 17 00:00:00 2001 From: nicolasroard Date: Tue, 12 Mar 2013 18:23:41 -0700 Subject: [PATCH] Fix preview synchronization Change-Id: Id6b5e5a140a3c366f2f5d4c29809e83ac1530d04 --- src/com/android/gallery3d/filtershow/ImageStateAdapter.java | 1 + src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java | 7 +++++++ src/com/android/gallery3d/filtershow/imageshow/ImageShow.java | 3 --- src/com/android/gallery3d/filtershow/presets/ImagePreset.java | 1 + 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/com/android/gallery3d/filtershow/ImageStateAdapter.java b/src/com/android/gallery3d/filtershow/ImageStateAdapter.java index 62633e26e..1cd5f86c8 100644 --- a/src/com/android/gallery3d/filtershow/ImageStateAdapter.java +++ b/src/com/android/gallery3d/filtershow/ImageStateAdapter.java @@ -45,6 +45,7 @@ public class ImageStateAdapter extends ArrayAdapter { view = (MovableLinearLayout) inflater.inflate(R.layout.filtershow_imagestate_row, null); } FilterRepresentation filter = getItem(position); + filter.synchronizeRepresentation(); view.setFilterRepresentation(filter); ImageView markView = (ImageView) view.findViewById(R.id.selectedMark); if (filter == MasterImage.getImage().getCurrentFilterRepresentation()) { diff --git a/src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java b/src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java index 39b39695c..4aeb580e6 100644 --- a/src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java +++ b/src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java @@ -49,6 +49,8 @@ public class FilteringPipeline implements Handler.Callback { private final static int COMPUTE_RENDERING_REQUEST = 3; private final static int COMPUTE_PARTIAL_RENDERING_REQUEST = 4; + private boolean mHasUnhandledPreviewRequest = false; + private Handler mProcessingHandler = null; private final Handler mUIHandler = new Handler() { @Override @@ -58,6 +60,9 @@ public class FilteringPipeline implements Handler.Callback { TripleBufferBitmap buffer = MasterImage.getImage().getDoubleBuffer(); buffer.swapConsumer(); MasterImage.getImage().notifyObservers(); + if (mHasUnhandledPreviewRequest) { + updatePreviewBuffer(); + } break; } case NEW_RENDERING_REQUEST: { @@ -194,6 +199,7 @@ public class FilteringPipeline implements Handler.Callback { if (mOriginalAllocation == null) { return; } + mHasUnhandledPreviewRequest = true; if (mProcessingHandler.hasMessages(COMPUTE_PRESET)) { return; } @@ -205,6 +211,7 @@ public class FilteringPipeline implements Handler.Callback { } Message msg = mProcessingHandler.obtainMessage(COMPUTE_PRESET); msg.obj = MasterImage.getImage().getPreset(); + mHasUnhandledPreviewRequest = false; mProcessingHandler.sendMessageAtFrontOfQueue(msg); } diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java b/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java index 38d415633..0b2f96abb 100644 --- a/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java +++ b/src/com/android/gallery3d/filtershow/imageshow/ImageShow.java @@ -156,9 +156,6 @@ public class ImageShow extends View implements OnGestureListener, } public void onNewValue(int parameter) { - if (getImagePreset() != null) { - getImagePreset().fillImageStateAdapter(MasterImage.getImage().getState()); - } if (getPanelController() != null) { getPanelController().onNewValue(parameter); } diff --git a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java index e27afe580..b75ac64fb 100644 --- a/src/com/android/gallery3d/filtershow/presets/ImagePreset.java +++ b/src/com/android/gallery3d/filtershow/presets/ImagePreset.java @@ -147,6 +147,7 @@ public class ImagePreset { } } MasterImage.getImage().invalidatePreview(); + fillImageStateAdapter(MasterImage.getImage().getState()); } public void setDoApplyGeometry(boolean value) { -- 2.11.0