summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/filtershow/cache
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/gallery3d/filtershow/cache')
-rw-r--r--src/com/android/gallery3d/filtershow/cache/CachingPipeline.java17
-rw-r--r--src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java5
-rw-r--r--src/com/android/gallery3d/filtershow/cache/TripleBufferBitmap.java92
3 files changed, 14 insertions, 100 deletions
diff --git a/src/com/android/gallery3d/filtershow/cache/CachingPipeline.java b/src/com/android/gallery3d/filtershow/cache/CachingPipeline.java
index 494c0a636..9901e5705 100644
--- a/src/com/android/gallery3d/filtershow/cache/CachingPipeline.java
+++ b/src/com/android/gallery3d/filtershow/cache/CachingPipeline.java
@@ -27,6 +27,7 @@ import com.android.gallery3d.filtershow.filters.FiltersManager;
import com.android.gallery3d.filtershow.filters.ImageFilterGeometry;
import com.android.gallery3d.filtershow.imageshow.GeometryMetadata;
import com.android.gallery3d.filtershow.imageshow.MasterImage;
+import com.android.gallery3d.filtershow.pipeline.SharedBuffer;
import com.android.gallery3d.filtershow.presets.FilterEnvironment;
import com.android.gallery3d.filtershow.presets.ImagePreset;
import com.android.gallery3d.filtershow.presets.PipelineInterface;
@@ -342,7 +343,7 @@ public class CachingPipeline implements PipelineInterface {
FilterEnvironment.QUALITY_PREVIEW);
}
- public synchronized void compute(TripleBufferBitmap buffer, ImagePreset preset, int type) {
+ public synchronized void compute(SharedBuffer buffer, ImagePreset preset, int type) {
synchronized (CachingPipeline.class) {
if (getRenderScriptContext() == null) {
return;
@@ -361,16 +362,20 @@ public class CachingPipeline implements PipelineInterface {
if (updateOriginalAllocation(preset)) {
resizedOriginalBitmap = mResizedOriginalBitmap;
mEnvironment.cache(buffer.getProducer());
- buffer.updateProducerBitmap(resizedOriginalBitmap);
+ buffer.setProducer(resizedOriginalBitmap);
+ }
+
+ Bitmap bitmap = null;
+ if (buffer.getProducer() != null) {
+ bitmap = buffer.getProducer().getBitmap();
}
- Bitmap bitmap = buffer.getProducer();
long time2 = System.currentTimeMillis();
if (bitmap == null || (bitmap.getWidth() != resizedOriginalBitmap.getWidth())
|| (bitmap.getHeight() != resizedOriginalBitmap.getHeight())) {
mEnvironment.cache(buffer.getProducer());
- buffer.updateProducerBitmap(resizedOriginalBitmap);
- bitmap = buffer.getProducer();
+ buffer.setProducer(resizedOriginalBitmap);
+ bitmap = buffer.getProducer().getBitmap();
}
mOriginalAllocation.copyTo(bitmap);
@@ -393,7 +398,7 @@ public class CachingPipeline implements PipelineInterface {
}
public boolean needsRepaint() {
- TripleBufferBitmap buffer = MasterImage.getImage().getDoubleBuffer();
+ SharedBuffer buffer = MasterImage.getImage().getPreviewBuffer();
return buffer.checkRepaintNeeded();
}
diff --git a/src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java b/src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java
index a0b289733..cac7e056d 100644
--- a/src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java
+++ b/src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java
@@ -26,6 +26,7 @@ import com.android.gallery3d.filtershow.filters.FiltersManager;
import com.android.gallery3d.filtershow.filters.ImageFilterRS;
import com.android.gallery3d.filtershow.imageshow.GeometryMetadata;
import com.android.gallery3d.filtershow.imageshow.MasterImage;
+import com.android.gallery3d.filtershow.pipeline.SharedBuffer;
import com.android.gallery3d.filtershow.presets.ImagePreset;
public class FilteringPipeline implements Handler.Callback {
@@ -71,7 +72,7 @@ public class FilteringPipeline implements Handler.Callback {
public void handleMessage(Message msg) {
switch (msg.what) {
case NEW_PRESET: {
- TripleBufferBitmap buffer = MasterImage.getImage().getDoubleBuffer();
+ SharedBuffer buffer = MasterImage.getImage().getPreviewBuffer();
buffer.swapConsumer();
MasterImage.getImage().notifyObservers();
if (mHasUnhandledPreviewRequest) {
@@ -96,7 +97,7 @@ public class FilteringPipeline implements Handler.Callback {
switch (msg.what) {
case COMPUTE_PRESET: {
ImagePreset preset = (ImagePreset) msg.obj;
- TripleBufferBitmap buffer = MasterImage.getImage().getDoubleBuffer();
+ SharedBuffer buffer = MasterImage.getImage().getPreviewBuffer();
mPreviewPipeline.compute(buffer, preset, COMPUTE_PRESET);
buffer.swapProducer();
Message uimsg = mUIHandler.obtainMessage(NEW_PRESET);
diff --git a/src/com/android/gallery3d/filtershow/cache/TripleBufferBitmap.java b/src/com/android/gallery3d/filtershow/cache/TripleBufferBitmap.java
deleted file mode 100644
index ba7b76925..000000000
--- a/src/com/android/gallery3d/filtershow/cache/TripleBufferBitmap.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.gallery3d.filtershow.cache;
-
-import android.graphics.Bitmap;
-
-public class TripleBufferBitmap {
-
- private static String LOGTAG = "TripleBufferBitmap";
-
- private volatile Bitmap mBitmaps[] = new Bitmap[3];
- private volatile Bitmap mProducer = null;
- private volatile Bitmap mConsumer = null;
- private volatile Bitmap mIntermediate = null;
- private volatile boolean mNeedsSwap = false;
-
- private final Bitmap.Config mBitmapConfig = Bitmap.Config.ARGB_8888;
- private volatile boolean mNeedsRepaint = true;
-
- public TripleBufferBitmap() {
-
- }
-
- public synchronized void updateBitmaps(Bitmap bitmap) {
- mBitmaps[0] = bitmap.copy(mBitmapConfig, true);
- mBitmaps[1] = bitmap.copy(mBitmapConfig, true);
- mBitmaps[2] = bitmap.copy(mBitmapConfig, true);
- mProducer = mBitmaps[0];
- mConsumer = mBitmaps[1];
- mIntermediate = mBitmaps[2];
- }
-
- public synchronized void updateProducerBitmap(Bitmap bitmap) {
- mProducer = bitmap.copy(mBitmapConfig, true);
- }
-
- public synchronized void setProducer(Bitmap producer) {
- mProducer = producer;
- }
-
- public synchronized Bitmap getProducer() {
- return mProducer;
- }
-
- public synchronized Bitmap getConsumer() {
- return mConsumer;
- }
-
- public synchronized void swapProducer() {
- Bitmap intermediate = mIntermediate;
- mIntermediate = mProducer;
- mProducer = intermediate;
- mNeedsSwap = true;
- }
-
- public synchronized void swapConsumer() {
- if (!mNeedsSwap) {
- return;
- }
- Bitmap intermediate = mIntermediate;
- mIntermediate = mConsumer;
- mConsumer = intermediate;
- mNeedsSwap = false;
- }
-
- public synchronized void invalidate() {
- mNeedsRepaint = true;
- }
-
- public synchronized boolean checkRepaintNeeded() {
- if (mNeedsRepaint) {
- mNeedsRepaint = false;
- return true;
- }
- return false;
- }
-
-}