Loading src/com/android/gallery3d/filtershow/cache/CachingPipeline.java +3 −6 Original line number Diff line number Diff line Loading @@ -359,16 +359,13 @@ public class CachingPipeline implements PipelineInterface { mFiltersManager.freeFilterResources(preset); Bitmap resizedOriginalBitmap = mResizedOriginalBitmap; if (updateOriginalAllocation(preset)) { if (updateOriginalAllocation(preset) || buffer.getProducer() == null) { resizedOriginalBitmap = mResizedOriginalBitmap; mEnvironment.cache(buffer.getProducer()); buffer.setProducer(resizedOriginalBitmap); mEnvironment.cache(buffer.getProducer()); } Bitmap bitmap = null; if (buffer.getProducer() != null) { bitmap = buffer.getProducer().getBitmap(); } Bitmap bitmap = buffer.getProducer().getBitmap(); long time2 = System.currentTimeMillis(); if (bitmap == null || (bitmap.getWidth() != resizedOriginalBitmap.getWidth()) Loading src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java +12 −7 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ 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.pipeline.SharedPreset; import com.android.gallery3d.filtershow.presets.ImagePreset; public class FilteringPipeline implements Handler.Callback { Loading Loading @@ -72,8 +73,6 @@ public class FilteringPipeline implements Handler.Callback { public void handleMessage(Message msg) { switch (msg.what) { case NEW_PRESET: { SharedBuffer buffer = MasterImage.getImage().getPreviewBuffer(); buffer.swapConsumer(); MasterImage.getImage().notifyObservers(); if (mHasUnhandledPreviewRequest) { updatePreviewBuffer(); Loading @@ -96,12 +95,18 @@ public class FilteringPipeline implements Handler.Callback { } switch (msg.what) { case COMPUTE_PRESET: { ImagePreset preset = (ImagePreset) msg.obj; SharedBuffer buffer = MasterImage.getImage().getPreviewBuffer(); mPreviewPipeline.compute(buffer, preset, COMPUTE_PRESET); buffer.swapProducer(); SharedPreset preset = MasterImage.getImage().getPreviewPreset(); ImagePreset renderingPreset = preset.dequeuePreset(); if (renderingPreset != null) { mPreviewPipeline.compute(buffer, renderingPreset, COMPUTE_PRESET); // set the preset we used in the buffer for later inspection UI-side buffer.getProducer().setPreset(renderingPreset); buffer.getProducer().sync(); buffer.swapProducer(); // push back the result Message uimsg = mUIHandler.obtainMessage(NEW_PRESET); mUIHandler.sendMessage(uimsg); } break; } case COMPUTE_RENDERING_REQUEST: Loading src/com/android/gallery3d/filtershow/filters/FilterRepresentation.java +0 −26 Original line number Diff line number Diff line Loading @@ -47,8 +47,6 @@ public class FilterRepresentation implements Cloneable { public static final byte TYPE_TINYPLANET = 6; protected static final String NAME_TAG = "Name"; private FilterRepresentation mTempRepresentation = null; public FilterRepresentation(String name) { mName = name; } Loading @@ -67,8 +65,6 @@ public class FilterRepresentation implements Cloneable { representation.setShowParameterValue(showParameterValue()); representation.mSerializationName = mSerializationName; representation.mTempRepresentation = mTempRepresentation != null ? mTempRepresentation.clone() : null; if (DEBUG) { Log.v(LOGTAG, "cloning from <" + this + "> to <" + representation + ">"); } Loading Loading @@ -140,28 +136,6 @@ public class FilterRepresentation implements Cloneable { public void useParametersFrom(FilterRepresentation a) { } public void clearTempRepresentation() { mTempRepresentation = null; } public synchronized void updateTempParametersFrom(FilterRepresentation representation) { if (mTempRepresentation == null) { try { mTempRepresentation = representation.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } } else { mTempRepresentation.useParametersFrom(representation); } } public synchronized void synchronizeRepresentation() { if (mTempRepresentation != null) { useParametersFrom(mTempRepresentation); } } public boolean allowsSingleInstanceOnly() { return false; } Loading src/com/android/gallery3d/filtershow/imageshow/MasterImage.java +9 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import com.android.gallery3d.filtershow.filters.FilterRepresentation; import com.android.gallery3d.filtershow.filters.ImageFilter; import com.android.gallery3d.filtershow.pipeline.Buffer; import com.android.gallery3d.filtershow.pipeline.SharedBuffer; import com.android.gallery3d.filtershow.pipeline.SharedPreset; import com.android.gallery3d.filtershow.presets.ImagePreset; import com.android.gallery3d.filtershow.state.StateAdapter; Loading @@ -58,6 +59,7 @@ public class MasterImage implements RenderingRequestCaller { private ImagePreset mFiltersOnlyPreset = null; private SharedBuffer mPreviewBuffer = new SharedBuffer(); private SharedPreset mPreviewPreset = new SharedPreset(); private Bitmap mGeometryOnlyBitmap = null; private Bitmap mFiltersOnlyBitmap = null; Loading Loading @@ -255,6 +257,10 @@ public class MasterImage implements RenderingRequestCaller { return mPreviewBuffer; } public SharedPreset getPreviewPreset() { return mPreviewPreset; } public void setOriginalGeometry(Bitmap originalBitmapLarge) { GeometryMetadata geo = getPreset().getGeometry(); float w = originalBitmapLarge.getWidth(); Loading @@ -266,6 +272,7 @@ public class MasterImage implements RenderingRequestCaller { } public Bitmap getFilteredImage() { mPreviewBuffer.swapConsumerIfNeeded(); // get latest bitmap Buffer consumer = mPreviewBuffer.getConsumer(); if (consumer != null) { return consumer.getBitmap(); Loading Loading @@ -349,6 +356,7 @@ public class MasterImage implements RenderingRequestCaller { } public void invalidatePreview() { mPreviewPreset.enqueuePreset(mPreset); mPreviewBuffer.invalidate(); invalidatePartialPreview(); invalidateHighresPreview(); Loading Loading @@ -554,4 +562,5 @@ public class MasterImage implements RenderingRequestCaller { public ImagePreset getLoadedPreset() { return mLoadedPreset; } } src/com/android/gallery3d/filtershow/pipeline/Buffer.java +21 −1 Original line number Diff line number Diff line Loading @@ -20,16 +20,21 @@ import android.graphics.Bitmap; import android.support.v8.renderscript.Allocation; import android.support.v8.renderscript.RenderScript; import com.android.gallery3d.filtershow.cache.CachingPipeline; import com.android.gallery3d.filtershow.presets.ImagePreset; public class Buffer { private static final String LOGTAG = "Buffer"; private Bitmap mBitmap; private Allocation mAllocation; private boolean mUseAllocation = false; private static final Bitmap.Config BITMAP_CONFIG = Bitmap.Config.ARGB_8888; private ImagePreset mPreset; public Buffer(Bitmap bitmap) { RenderScript rs = CachingPipeline.getRenderScriptContext(); if (bitmap != null) { mBitmap = bitmap.copy(BITMAP_CONFIG, true); } if (mUseAllocation) { // TODO: recreate the allocation when the RS context changes mAllocation = Allocation.createFromBitmap(rs, mBitmap, Loading @@ -38,6 +43,10 @@ public class Buffer { } } public void setBitmap(Bitmap bitmap) { mBitmap = bitmap.copy(BITMAP_CONFIG, true); } public Bitmap getBitmap() { return mBitmap; } Loading @@ -52,5 +61,16 @@ public class Buffer { } } public ImagePreset getPreset() { return mPreset; } public void setPreset(ImagePreset preset) { if ((mPreset == null) || (!mPreset.same(preset))) { mPreset = new ImagePreset(preset); } else { mPreset.updateWith(preset); } } } Loading
src/com/android/gallery3d/filtershow/cache/CachingPipeline.java +3 −6 Original line number Diff line number Diff line Loading @@ -359,16 +359,13 @@ public class CachingPipeline implements PipelineInterface { mFiltersManager.freeFilterResources(preset); Bitmap resizedOriginalBitmap = mResizedOriginalBitmap; if (updateOriginalAllocation(preset)) { if (updateOriginalAllocation(preset) || buffer.getProducer() == null) { resizedOriginalBitmap = mResizedOriginalBitmap; mEnvironment.cache(buffer.getProducer()); buffer.setProducer(resizedOriginalBitmap); mEnvironment.cache(buffer.getProducer()); } Bitmap bitmap = null; if (buffer.getProducer() != null) { bitmap = buffer.getProducer().getBitmap(); } Bitmap bitmap = buffer.getProducer().getBitmap(); long time2 = System.currentTimeMillis(); if (bitmap == null || (bitmap.getWidth() != resizedOriginalBitmap.getWidth()) Loading
src/com/android/gallery3d/filtershow/cache/FilteringPipeline.java +12 −7 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ 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.pipeline.SharedPreset; import com.android.gallery3d.filtershow.presets.ImagePreset; public class FilteringPipeline implements Handler.Callback { Loading Loading @@ -72,8 +73,6 @@ public class FilteringPipeline implements Handler.Callback { public void handleMessage(Message msg) { switch (msg.what) { case NEW_PRESET: { SharedBuffer buffer = MasterImage.getImage().getPreviewBuffer(); buffer.swapConsumer(); MasterImage.getImage().notifyObservers(); if (mHasUnhandledPreviewRequest) { updatePreviewBuffer(); Loading @@ -96,12 +95,18 @@ public class FilteringPipeline implements Handler.Callback { } switch (msg.what) { case COMPUTE_PRESET: { ImagePreset preset = (ImagePreset) msg.obj; SharedBuffer buffer = MasterImage.getImage().getPreviewBuffer(); mPreviewPipeline.compute(buffer, preset, COMPUTE_PRESET); buffer.swapProducer(); SharedPreset preset = MasterImage.getImage().getPreviewPreset(); ImagePreset renderingPreset = preset.dequeuePreset(); if (renderingPreset != null) { mPreviewPipeline.compute(buffer, renderingPreset, COMPUTE_PRESET); // set the preset we used in the buffer for later inspection UI-side buffer.getProducer().setPreset(renderingPreset); buffer.getProducer().sync(); buffer.swapProducer(); // push back the result Message uimsg = mUIHandler.obtainMessage(NEW_PRESET); mUIHandler.sendMessage(uimsg); } break; } case COMPUTE_RENDERING_REQUEST: Loading
src/com/android/gallery3d/filtershow/filters/FilterRepresentation.java +0 −26 Original line number Diff line number Diff line Loading @@ -47,8 +47,6 @@ public class FilterRepresentation implements Cloneable { public static final byte TYPE_TINYPLANET = 6; protected static final String NAME_TAG = "Name"; private FilterRepresentation mTempRepresentation = null; public FilterRepresentation(String name) { mName = name; } Loading @@ -67,8 +65,6 @@ public class FilterRepresentation implements Cloneable { representation.setShowParameterValue(showParameterValue()); representation.mSerializationName = mSerializationName; representation.mTempRepresentation = mTempRepresentation != null ? mTempRepresentation.clone() : null; if (DEBUG) { Log.v(LOGTAG, "cloning from <" + this + "> to <" + representation + ">"); } Loading Loading @@ -140,28 +136,6 @@ public class FilterRepresentation implements Cloneable { public void useParametersFrom(FilterRepresentation a) { } public void clearTempRepresentation() { mTempRepresentation = null; } public synchronized void updateTempParametersFrom(FilterRepresentation representation) { if (mTempRepresentation == null) { try { mTempRepresentation = representation.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } } else { mTempRepresentation.useParametersFrom(representation); } } public synchronized void synchronizeRepresentation() { if (mTempRepresentation != null) { useParametersFrom(mTempRepresentation); } } public boolean allowsSingleInstanceOnly() { return false; } Loading
src/com/android/gallery3d/filtershow/imageshow/MasterImage.java +9 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import com.android.gallery3d.filtershow.filters.FilterRepresentation; import com.android.gallery3d.filtershow.filters.ImageFilter; import com.android.gallery3d.filtershow.pipeline.Buffer; import com.android.gallery3d.filtershow.pipeline.SharedBuffer; import com.android.gallery3d.filtershow.pipeline.SharedPreset; import com.android.gallery3d.filtershow.presets.ImagePreset; import com.android.gallery3d.filtershow.state.StateAdapter; Loading @@ -58,6 +59,7 @@ public class MasterImage implements RenderingRequestCaller { private ImagePreset mFiltersOnlyPreset = null; private SharedBuffer mPreviewBuffer = new SharedBuffer(); private SharedPreset mPreviewPreset = new SharedPreset(); private Bitmap mGeometryOnlyBitmap = null; private Bitmap mFiltersOnlyBitmap = null; Loading Loading @@ -255,6 +257,10 @@ public class MasterImage implements RenderingRequestCaller { return mPreviewBuffer; } public SharedPreset getPreviewPreset() { return mPreviewPreset; } public void setOriginalGeometry(Bitmap originalBitmapLarge) { GeometryMetadata geo = getPreset().getGeometry(); float w = originalBitmapLarge.getWidth(); Loading @@ -266,6 +272,7 @@ public class MasterImage implements RenderingRequestCaller { } public Bitmap getFilteredImage() { mPreviewBuffer.swapConsumerIfNeeded(); // get latest bitmap Buffer consumer = mPreviewBuffer.getConsumer(); if (consumer != null) { return consumer.getBitmap(); Loading Loading @@ -349,6 +356,7 @@ public class MasterImage implements RenderingRequestCaller { } public void invalidatePreview() { mPreviewPreset.enqueuePreset(mPreset); mPreviewBuffer.invalidate(); invalidatePartialPreview(); invalidateHighresPreview(); Loading Loading @@ -554,4 +562,5 @@ public class MasterImage implements RenderingRequestCaller { public ImagePreset getLoadedPreset() { return mLoadedPreset; } }
src/com/android/gallery3d/filtershow/pipeline/Buffer.java +21 −1 Original line number Diff line number Diff line Loading @@ -20,16 +20,21 @@ import android.graphics.Bitmap; import android.support.v8.renderscript.Allocation; import android.support.v8.renderscript.RenderScript; import com.android.gallery3d.filtershow.cache.CachingPipeline; import com.android.gallery3d.filtershow.presets.ImagePreset; public class Buffer { private static final String LOGTAG = "Buffer"; private Bitmap mBitmap; private Allocation mAllocation; private boolean mUseAllocation = false; private static final Bitmap.Config BITMAP_CONFIG = Bitmap.Config.ARGB_8888; private ImagePreset mPreset; public Buffer(Bitmap bitmap) { RenderScript rs = CachingPipeline.getRenderScriptContext(); if (bitmap != null) { mBitmap = bitmap.copy(BITMAP_CONFIG, true); } if (mUseAllocation) { // TODO: recreate the allocation when the RS context changes mAllocation = Allocation.createFromBitmap(rs, mBitmap, Loading @@ -38,6 +43,10 @@ public class Buffer { } } public void setBitmap(Bitmap bitmap) { mBitmap = bitmap.copy(BITMAP_CONFIG, true); } public Bitmap getBitmap() { return mBitmap; } Loading @@ -52,5 +61,16 @@ public class Buffer { } } public ImagePreset getPreset() { return mPreset; } public void setPreset(ImagePreset preset) { if ((mPreset == null) || (!mPreset.same(preset))) { mPreset = new ImagePreset(preset); } else { mPreset.updateWith(preset); } } }