summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java')
-rw-r--r--src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java24
1 files changed, 11 insertions, 13 deletions
diff --git a/src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java b/src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java
index 4aeb580e6..d7e9a62a7 100644
--- a/src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java
+++ b/src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java
@@ -30,7 +30,7 @@ import com.android.gallery3d.filtershow.presets.ImagePreset;
public class FilteringPipeline implements Handler.Callback {
- private static FilteringPipeline sPipeline;
+ private static volatile FilteringPipeline sPipeline = null;
private static final String LOGTAG = "FilteringPipeline";
private ImagePreset mPreviousGeometryPreset = null;
private ImagePreset mPreviousFiltersPreset = null;
@@ -120,7 +120,7 @@ public class FilteringPipeline implements Handler.Callback {
mProcessingHandler = new Handler(mHandlerThread.getLooper(), this);
}
- public static FilteringPipeline getPipeline() {
+ public synchronized static FilteringPipeline getPipeline() {
if (sPipeline == null) {
sPipeline = new FilteringPipeline();
}
@@ -173,8 +173,6 @@ public class FilteringPipeline implements Handler.Callback {
Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT);
mPreviousGeometry = new GeometryMetadata(geometry);
-
- FiltersManager.getManager().resetBitmapsRS();
return true;
}
@@ -259,17 +257,19 @@ public class FilteringPipeline implements Handler.Callback {
preset.setupEnvironment();
if (request.getType() == RenderingRequest.PARTIAL_RENDERING) {
- bitmap = MasterImage.getImage().getImageLoader().getScaleOneImageForPreset(null, preset,
+ ImageLoader loader = MasterImage.getImage().getImageLoader();
+ if (loader == null) {
+ Log.w(LOGTAG, "loader not yet setup, cannot handle: " + getType(request));
+ return;
+ }
+ bitmap = loader.getScaleOneImageForPreset(null, preset,
request.getBounds(), request.getDestination(), false);
if (bitmap == null) {
+ Log.w(LOGTAG, "could not get bitmap for: " + getType(request));
return;
}
}
- if (request.getType() == RenderingRequest.FILTERS_RENDERING) {
- FiltersManager.getManager().resetBitmapsRS();
- }
-
if (request.getType() != RenderingRequest.ICON_RENDERING
&& request.getType() != RenderingRequest.PARTIAL_RENDERING) {
updateOriginalAllocation(preset);
@@ -296,9 +296,6 @@ public class FilteringPipeline implements Handler.Callback {
FiltersManager.getManager().freeFilterResources(preset);
}
- if (request.getType() == RenderingRequest.FILTERS_RENDERING) {
- FiltersManager.getManager().resetBitmapsRS();
- }
}
private void compute(TripleBufferBitmap buffer, ImagePreset preset, int type) {
@@ -356,7 +353,8 @@ public class FilteringPipeline implements Handler.Callback {
return mPreviewScaleFactor;
}
- public static void reset() {
+ public static synchronized void reset() {
+ sPipeline.mHandlerThread.quit();
sPipeline = null;
}
}