Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 20eb41f8 authored by nicolasroard's avatar nicolasroard
Browse files

Fix stickiness issues with UI

The renderGeometryIcon() function shouldn't
be synchronized -- it's independent of the rest
of the pipeline and is only used to apply a given geometry.

Change-Id: I91a5d2ec3f28f15c489066ed2c5a5009e29fa7b3
parent 5bd6e14f
Loading
Loading
Loading
Loading
+11 −9
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.support.v8.renderscript.Allocation;
import android.support.v8.renderscript.RenderScript;
import android.util.Log;
import com.android.gallery3d.filtershow.filters.FiltersManager;
import com.android.gallery3d.filtershow.filters.ImageFilterGeometry;
import com.android.gallery3d.filtershow.filters.ImageFilterRS;
import com.android.gallery3d.filtershow.imageshow.GeometryMetadata;
import com.android.gallery3d.filtershow.imageshow.MasterImage;
@@ -57,6 +58,8 @@ public class CachingPipeline {
    private volatile float mHighResPreviewScaleFactor = 1.0f;
    private volatile String mName = "";

    private ImageFilterGeometry mGeometry = null;

    public CachingPipeline(FiltersManager filtersManager, String name) {
        mFiltersManager = filtersManager;
        mName = name;
@@ -302,16 +305,15 @@ public class CachingPipeline {
        }
    }

    public synchronized Bitmap renderGeometryIcon(Bitmap bitmap, ImagePreset preset) {
        synchronized (CachingPipeline.class) {
            if (getRenderScriptContext() == null) {
                return bitmap;
            }
            setupEnvironment(preset, false);
            mEnvironment.setQuality(ImagePreset.QUALITY_PREVIEW);
            bitmap = preset.applyGeometry(bitmap, mEnvironment);
            return bitmap;
    public Bitmap renderGeometryIcon(Bitmap bitmap, ImagePreset preset) {
        // Called by RenderRequest on the main thread
        // TODO: change this -- we should reuse a pool of bitmaps instead...
        if (mGeometry == null) {
            mGeometry = new ImageFilterGeometry();
        }
        mGeometry.useRepresentation(preset.getGeometry());
        return mGeometry.apply(bitmap, mPreviewScaleFactor,
                ImagePreset.QUALITY_PREVIEW);
    }

    public synchronized void compute(TripleBufferBitmap buffer, ImagePreset preset, int type) {