OSDN Git Service

Make Gallery2 use platform RenderScript
[android-x86/packages-apps-Gallery2.git] / src / com / android / gallery3d / filtershow / pipeline / CachingPipeline.java
index 4370013..2923e3b 100644 (file)
@@ -24,10 +24,11 @@ import android.graphics.Matrix;
 import android.graphics.Paint;
 import android.graphics.Rect;
 import android.graphics.RectF;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.RenderScript;
+import android.renderscript.Allocation;
+import android.renderscript.RenderScript;
 import android.util.Log;
 
+import com.android.gallery3d.filtershow.cache.BitmapCache;
 import com.android.gallery3d.filtershow.cache.ImageLoader;
 import com.android.gallery3d.filtershow.filters.FilterRepresentation;
 import com.android.gallery3d.filtershow.filters.FiltersManager;
@@ -222,7 +223,7 @@ public class CachingPipeline implements PipelineInterface {
             if (bitmap == null) {
                 return;
             }
-            bitmap = mEnvironment.getBitmapCopy(bitmap);
+            bitmap = mEnvironment.getBitmapCopy(bitmap, BitmapCache.HIGHRES);
             bitmap = preset.applyGeometry(bitmap, mEnvironment);
 
             mEnvironment.setQuality(FilterEnvironment.QUALITY_PREVIEW);
@@ -247,7 +248,7 @@ public class CachingPipeline implements PipelineInterface {
             if (bitmap == null) {
                 return;
             }
-            bitmap = mEnvironment.getBitmapCopy(bitmap);
+            bitmap = mEnvironment.getBitmapCopy(bitmap, BitmapCache.GEOMETRY);
             bitmap = preset.applyGeometry(bitmap, mEnvironment);
             if (!mEnvironment.needsStop()) {
                 request.setBitmap(bitmap);
@@ -269,7 +270,7 @@ public class CachingPipeline implements PipelineInterface {
             if (bitmap == null) {
                 return;
             }
-            bitmap = mEnvironment.getBitmapCopy(bitmap);
+            bitmap = mEnvironment.getBitmapCopy(bitmap, BitmapCache.FILTERS);
             bitmap = preset.apply(bitmap, mEnvironment);
             if (!mEnvironment.needsStop()) {
                 request.setBitmap(bitmap);
@@ -305,7 +306,7 @@ public class CachingPipeline implements PipelineInterface {
             if (request.getType() == RenderingRequest.PARTIAL_RENDERING) {
                 MasterImage master = MasterImage.getImage();
                 bitmap = ImageLoader.getScaleOneImageForPreset(master.getActivity(),
-                        mEnvironment,
+                        mEnvironment.getBimapCache(),
                         master.getUri(), request.getBounds(),
                         request.getDestination());
                 if (bitmap == null) {
@@ -352,7 +353,8 @@ public class CachingPipeline implements PipelineInterface {
                         source = MasterImage.getImage().getLargeThumbnailBitmap();
                     }
                     if (iconBounds != null) {
-                        bitmap = mEnvironment.getBitmap(iconBounds.width(), iconBounds.height());
+                        bitmap = mEnvironment.getBitmap(iconBounds.width(),
+                                iconBounds.height(), BitmapCache.ICON);
                         Canvas canvas = new Canvas(bitmap);
                         Matrix m = new Matrix();
                         float minSize = Math.min(source.getWidth(), source.getHeight());
@@ -364,7 +366,7 @@ public class CachingPipeline implements PipelineInterface {
                         m.postTranslate(dx, dy);
                         canvas.drawBitmap(source, m, new Paint(Paint.FILTER_BITMAP_FLAG));
                     } else {
-                        bitmap = mEnvironment.getBitmapCopy(source);
+                        bitmap = mEnvironment.getBitmapCopy(source, BitmapCache.ICON);
                     }
                 }
                 Bitmap bmp = preset.apply(bitmap, mEnvironment);
@@ -419,57 +421,7 @@ public class CachingPipeline implements PipelineInterface {
         Vector<FilterRepresentation> filters = preset.getFilters();
         Bitmap result = mCachedProcessing.process(mOriginalBitmap, filters, mEnvironment);
         buffer.setProducer(result);
-    }
-
-    public synchronized void computeOld(SharedBuffer buffer, ImagePreset preset, int type) {
-        synchronized (CachingPipeline.class) {
-            if (getRenderScriptContext() == null) {
-                return;
-            }
-            if (DEBUG) {
-                Log.v(LOGTAG, "compute preset " + preset);
-                preset.showFilters();
-            }
-
-            String thread = Thread.currentThread().getName();
-            long time = System.currentTimeMillis();
-            setupEnvironment(preset, false);
-            mFiltersManager.freeFilterResources(preset);
-
-            Bitmap resizedOriginalBitmap = mResizedOriginalBitmap;
-            if (updateOriginalAllocation(preset) || buffer.getProducer() == null) {
-                resizedOriginalBitmap = mResizedOriginalBitmap;
-                buffer.setProducer(resizedOriginalBitmap);
-                mEnvironment.cache(buffer.getProducer());
-            }
-
-            Bitmap bitmap = buffer.getProducer().getBitmap();
-            long time2 = System.currentTimeMillis();
-
-            if (bitmap == null || (bitmap.getWidth() != resizedOriginalBitmap.getWidth())
-                    || (bitmap.getHeight() != resizedOriginalBitmap.getHeight())) {
-                mEnvironment.cache(buffer.getProducer());
-                buffer.setProducer(resizedOriginalBitmap);
-                bitmap = buffer.getProducer().getBitmap();
-            }
-            mOriginalAllocation.copyTo(bitmap);
-
-            Bitmap tmpbitmap = preset.apply(bitmap, mEnvironment);
-            if (tmpbitmap != bitmap) {
-                mEnvironment.cache(buffer.getProducer());
-                buffer.setProducer(tmpbitmap);
-            }
-
-            mFiltersManager.freeFilterResources(preset);
-
-            time = System.currentTimeMillis() - time;
-            time2 = System.currentTimeMillis() - time2;
-            if (DEBUG) {
-                Log.v(LOGTAG, "Applying type " + type + " filters to bitmap "
-                        + bitmap + " (" + bitmap.getWidth() + " x " + bitmap.getHeight()
-                        + ") took " + time + " ms, " + time2 + " ms for the filter, on thread " + thread);
-            }
-        }
+        mEnvironment.cache(result);
     }
 
     public boolean needsRepaint() {