Loading src/com/android/gallery3d/filtershow/pipeline/CachingPipeline.java +0 −51 Original line number Diff line number Diff line Loading @@ -424,57 +424,6 @@ public class CachingPipeline implements PipelineInterface { mEnvironment.cache(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); } } } public boolean needsRepaint() { SharedBuffer buffer = MasterImage.getImage().getPreviewBuffer(); return buffer.checkRepaintNeeded(); Loading src/com/android/gallery3d/filtershow/pipeline/ImagePreset.java +29 −5 Original line number Diff line number Diff line Loading @@ -347,12 +347,22 @@ public class ImagePreset { public void addFilter(FilterRepresentation representation) { if (representation instanceof FilterUserPresetRepresentation) { ImagePreset preset = ((FilterUserPresetRepresentation) representation).getImagePreset(); // user preset replace everything but geometry if (preset.nbFilters() == 1 && preset.contains(FilterRepresentation.TYPE_FX)) { FilterRepresentation rep = preset.getFilterRepresentationForType( FilterRepresentation.TYPE_FX); removeFilter(rep); if (!isNoneBorderFilter(rep)) { mFilters.add(rep); } } else { // user preset replaces everything mFilters.clear(); for (int i = 0; i < preset.nbFilters(); i++) { addFilter(preset.getFilterRepresentation(i)); } mFilters.add(representation); } } else if (representation.getFilterType() == FilterRepresentation.TYPE_GEOMETRY) { // Add geometry filter, removing duplicates and do-nothing operations. for (int i = 0; i < mFilters.size(); i++) { Loading Loading @@ -426,6 +436,20 @@ public class ImagePreset { } else { mFilters.add(representation); } // Enforces Filter type ordering for borders FilterRepresentation border = null; for (int i = 0; i < mFilters.size();) { FilterRepresentation rep = mFilters.elementAt(i); if (rep.getFilterType() == FilterRepresentation.TYPE_BORDER) { border = rep; mFilters.remove(i); continue; } i++; } if (border != null) { mFilters.add(border); } } private boolean isNoneBorderFilter(FilterRepresentation representation) { Loading Loading
src/com/android/gallery3d/filtershow/pipeline/CachingPipeline.java +0 −51 Original line number Diff line number Diff line Loading @@ -424,57 +424,6 @@ public class CachingPipeline implements PipelineInterface { mEnvironment.cache(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); } } } public boolean needsRepaint() { SharedBuffer buffer = MasterImage.getImage().getPreviewBuffer(); return buffer.checkRepaintNeeded(); Loading
src/com/android/gallery3d/filtershow/pipeline/ImagePreset.java +29 −5 Original line number Diff line number Diff line Loading @@ -347,12 +347,22 @@ public class ImagePreset { public void addFilter(FilterRepresentation representation) { if (representation instanceof FilterUserPresetRepresentation) { ImagePreset preset = ((FilterUserPresetRepresentation) representation).getImagePreset(); // user preset replace everything but geometry if (preset.nbFilters() == 1 && preset.contains(FilterRepresentation.TYPE_FX)) { FilterRepresentation rep = preset.getFilterRepresentationForType( FilterRepresentation.TYPE_FX); removeFilter(rep); if (!isNoneBorderFilter(rep)) { mFilters.add(rep); } } else { // user preset replaces everything mFilters.clear(); for (int i = 0; i < preset.nbFilters(); i++) { addFilter(preset.getFilterRepresentation(i)); } mFilters.add(representation); } } else if (representation.getFilterType() == FilterRepresentation.TYPE_GEOMETRY) { // Add geometry filter, removing duplicates and do-nothing operations. for (int i = 0; i < mFilters.size(); i++) { Loading Loading @@ -426,6 +436,20 @@ public class ImagePreset { } else { mFilters.add(representation); } // Enforces Filter type ordering for borders FilterRepresentation border = null; for (int i = 0; i < mFilters.size();) { FilterRepresentation rep = mFilters.elementAt(i); if (rep.getFilterType() == FilterRepresentation.TYPE_BORDER) { border = rep; mFilters.remove(i); continue; } i++; } if (border != null) { mFilters.add(border); } } private boolean isNoneBorderFilter(FilterRepresentation representation) { Loading