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

Commit 8b9cc5f3 authored by nicolasroard's avatar nicolasroard
Browse files

Fix for wrong bitmap picked after geometry change

Change-Id: I48d7892c761bb1d8a83553786367aa11d1841fb5
parent 55d6abe5
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -242,10 +242,9 @@ public class Editor implements OnSeekBarChangeListener, SwapButton.SwapButtonLis
        if (mChangesGeometry) {
            // Regenerate both the filtered and the geometry-only bitmaps
            MasterImage.getImage().resetGeometryImages();
        } else {
            // Regenerate only the filtered bitmap.
            MasterImage.getImage().invalidateFiltersOnly();
        }
        // Regenerate the filtered bitmap.
        MasterImage.getImage().invalidateFiltersOnly();
        preset.fillImageStateAdapter(MasterImage.getImage().getState());
    }

+1 −1
Original line number Diff line number Diff line
@@ -256,7 +256,7 @@ public class ImageShow extends View implements OnGestureListener,
    }

    public void resetImageCaches(ImageShow caller) {
        MasterImage.getImage().resetGeometryImages();
        MasterImage.getImage().invalidatePreview();
    }

    public Bitmap getFiltersOnlyImage() {
+17 −21
Original line number Diff line number Diff line
@@ -332,29 +332,25 @@ public class MasterImage implements RenderingRequestCaller {
    }

    public void resetGeometryImages() {
        if (mGeometryOnlyPreset == null) {
            ImagePreset newPreset = new ImagePreset(mPreset);
            newPreset.setDoApplyFilters(false);
            newPreset.setDoApplyGeometry(true);
        ImagePreset newPresetGeometryOnly = new ImagePreset(mPreset);
        newPresetGeometryOnly.setDoApplyFilters(false);
        newPresetGeometryOnly.setDoApplyGeometry(true);
        if (mGeometryOnlyPreset == null
                    || !newPreset.same(mGeometryOnlyPreset)) {
                mGeometryOnlyPreset = newPreset;
                || !newPresetGeometryOnly.same(mGeometryOnlyPreset)) {
            mGeometryOnlyPreset = newPresetGeometryOnly;
            RenderingRequest.post(mActivity, getOriginalBitmapLarge(),
                    mGeometryOnlyPreset, RenderingRequest.GEOMETRY_RENDERING, this);
        }
        }
        if (mFiltersOnlyPreset == null) {
            ImagePreset newPreset = new ImagePreset(mPreset);
            newPreset.setDoApplyFilters(true);
            newPreset.setDoApplyGeometry(false);
        ImagePreset newPresetFiltersOnly = new ImagePreset(mPreset);
        newPresetFiltersOnly.setDoApplyFilters(true);
        newPresetFiltersOnly.setDoApplyGeometry(false);
        if (mFiltersOnlyPreset == null
                    || !newPreset.same(mFiltersOnlyPreset)) {
                mFiltersOnlyPreset = newPreset;
                || !newPresetFiltersOnly.same(mFiltersOnlyPreset)) {
            mFiltersOnlyPreset = newPresetFiltersOnly;
            RenderingRequest.post(mActivity, MasterImage.getImage().getOriginalBitmapLarge(),
                    mFiltersOnlyPreset, RenderingRequest.FILTERS_RENDERING, this);
        }
    }
    }

    public void updatePresets(boolean force) {
        invalidatePreview();
+11 −1
Original line number Diff line number Diff line
@@ -116,7 +116,7 @@ public class CacheProcessing {
                          FilterEnvironment environment) {

        if (filters.size() == 0) {
            return originalBitmap;
            return environment.getBitmapCopy(originalBitmap);
        }

        if (DEBUG) {
@@ -172,12 +172,22 @@ public class CacheProcessing {
        for (int i = findBaseImageIndex; i < mSteps.size(); i++) {
            if (i == -1 || cacheBitmap == null) {
                cacheBitmap = environment.getBitmapCopy(originalBitmap);
                if (DEBUG) {
                    Log.v(LOGTAG, "i: " + i + " cacheBitmap: " + cacheBitmap + " w: "
                            + cacheBitmap.getWidth() + " h: " + cacheBitmap.getHeight()
                            + " got from original Bitmap: " + originalBitmap + " w: "
                            + originalBitmap.getWidth() + " h: " + originalBitmap.getHeight());
                }
                if (i == -1) {
                    continue;
                }
            }
            CacheStep step = mSteps.elementAt(i);
            if (step.cache == null) {
                if (DEBUG) {
                    Log.v(LOGTAG, "i: " + i + " get new copy for cacheBitmap "
                            + cacheBitmap + " apply...");
                }
                cacheBitmap = environment.getBitmapCopy(cacheBitmap);
                cacheBitmap = step.apply(environment, cacheBitmap);
                environment.cache(step.cache);
+4 −6
Original line number Diff line number Diff line
@@ -17,15 +17,11 @@
package com.android.gallery3d.filtershow.pipeline;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.support.v8.renderscript.Allocation;

import com.android.gallery3d.filtershow.filters.FilterRepresentation;
import com.android.gallery3d.filtershow.filters.FilterUserPresetRepresentation;
import com.android.gallery3d.filtershow.filters.FilterRotateRepresentation.Rotation;
import com.android.gallery3d.filtershow.filters.FiltersManagerInterface;
import com.android.gallery3d.filtershow.filters.ImageFilter;

@@ -82,7 +78,9 @@ public class FilterEnvironment {
        if (ref != null) {
            bitmap = ref.get();
        }
        if (bitmap == null) {
        if (bitmap == null
                || bitmap.getWidth() != w
                || bitmap.getHeight() != h) {
            bitmap = Bitmap.createBitmap(
                    w, h, Bitmap.Config.ARGB_8888);
        }
@@ -97,7 +95,7 @@ public class FilterEnvironment {
    }

    private Long calcKey(long w, long h) {
        return (w << 32) | (h << 32);
        return (w << 32) | h;
    }

    public void setImagePreset(ImagePreset imagePreset) {