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

Commit e29b5733 authored by nicolasroard's avatar nicolasroard
Browse files

Add a third pipeline reserved for the high res preview

Change-Id: I1f35f0a7195157e5fe742d7d7c5506b3f84ece1b
parent 701955ac
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -365,10 +365,14 @@ public class FilterShowActivity extends Activity implements OnItemClickListener,
        filterBorder.setResources(res);
        filterBorder = (ImageFilterBorder) FiltersManager.getPreviewManager().getFilter(ImageFilterBorder.class);
        filterBorder.setResources(res);
        filterBorder = (ImageFilterBorder) FiltersManager.getHighresManager().getFilter(ImageFilterBorder.class);
        filterBorder.setResources(res);
        ImageFilterFx filterFx = (ImageFilterFx) FiltersManager.getManager().getFilter(ImageFilterFx.class);
        filterFx.setResources(res);
        filterFx = (ImageFilterFx) FiltersManager.getPreviewManager().getFilter(ImageFilterFx.class);
        filterFx.setResources(res);
        filterFx = (ImageFilterFx) FiltersManager.getHighresManager().getFilter(ImageFilterFx.class);
        filterFx.setResources(res);

        ImageShow.setDefaultBackgroundColor(res.getColor(R.color.background_screen));
        // TODO: get those values from XML.
@@ -554,6 +558,7 @@ public class FilterShowActivity extends Activity implements OnItemClickListener,
        ImageFilter.resetStatics();
        FiltersManager.getPreviewManager().freeRSFilterScripts();
        FiltersManager.getManager().freeRSFilterScripts();
        FiltersManager.getHighresManager().freeRSFilterScripts();
        FiltersManager.reset();
        CachingPipeline.destroyRenderScriptContext();
        super.onDestroy();
+13 −2
Original line number Diff line number Diff line
@@ -34,12 +34,13 @@ public class FilteringPipeline implements Handler.Callback {
    private static final String LOGTAG = "FilteringPipeline";
    private boolean DEBUG = false;

    private static long HIRES_DELAY = 100; // in ms
    private static long HIRES_DELAY = 300; // in ms

    private volatile boolean mPipelineIsOn = false;

    private CachingPipeline mAccessoryPipeline = null;
    private CachingPipeline mPreviewPipeline = null;
    private CachingPipeline mHighresPreviewPipeline = null;

    private HandlerThread mHandlerThread = null;
    private final static int NEW_PRESET = 0;
@@ -111,7 +112,11 @@ public class FilteringPipeline implements Handler.Callback {
                }

                RenderingRequest request = (RenderingRequest) msg.obj;
                if (msg.what == COMPUTE_HIGHRES_RENDERING_REQUEST) {
                    mHighresPreviewPipeline.render(request);
                } else {
                    mAccessoryPipeline.render(request);
                }
                Message uimsg = mUIHandler.obtainMessage(NEW_RENDERING_REQUEST);
                uimsg.obj = request;
                mUIHandler.sendMessage(uimsg);
@@ -128,6 +133,7 @@ public class FilteringPipeline implements Handler.Callback {
        mProcessingHandler = new Handler(mHandlerThread.getLooper(), this);
        mAccessoryPipeline = new CachingPipeline(FiltersManager.getManager(), "Accessory");
        mPreviewPipeline = new CachingPipeline(FiltersManager.getPreviewManager(), "Preview");
        mHighresPreviewPipeline = new CachingPipeline(FiltersManager.getHighresManager(), "Highres");
    }

    public synchronized static FilteringPipeline getPipeline() {
@@ -145,6 +151,7 @@ public class FilteringPipeline implements Handler.Callback {
        Log.v(LOGTAG,"setOriginal, size " + bitmap.getWidth() + " x " + bitmap.getHeight());
        mAccessoryPipeline.setOriginal(bitmap);
        mPreviewPipeline.setOriginal(bitmap);
        mHighresPreviewPipeline.setOriginal(bitmap);
    }

    public void postRenderingRequest(RenderingRequest request) {
@@ -194,16 +201,19 @@ public class FilteringPipeline implements Handler.Callback {
    public void setPreviewScaleFactor(float previewScaleFactor) {
        mAccessoryPipeline.setPreviewScaleFactor(previewScaleFactor);
        mPreviewPipeline.setPreviewScaleFactor(previewScaleFactor);
        mHighresPreviewPipeline.setPreviewScaleFactor(previewScaleFactor);
    }

    public void setHighResPreviewScaleFactor(float highResPreviewScaleFactor) {
        mAccessoryPipeline.setHighResPreviewScaleFactor(highResPreviewScaleFactor);
        mPreviewPipeline.setHighResPreviewScaleFactor(highResPreviewScaleFactor);
        mHighresPreviewPipeline.setHighResPreviewScaleFactor(highResPreviewScaleFactor);
    }

    public static synchronized void reset() {
        sPipeline.mAccessoryPipeline.reset();
        sPipeline.mPreviewPipeline.reset();
        sPipeline.mHighresPreviewPipeline.reset();
        sPipeline.mHandlerThread.quit();
        sPipeline = null;
    }
@@ -213,6 +223,7 @@ public class FilteringPipeline implements Handler.Callback {
        if (mPipelineIsOn) {
            assert(mPreviewPipeline.isInitialized());
            assert(mAccessoryPipeline.isInitialized());
            assert(mHighresPreviewPipeline.isInitialized());
            updatePreviewBuffer();
        }
    }
+9 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import java.util.Vector;
public class FiltersManager extends BaseFiltersManager {
    private static FiltersManager sInstance = null;
    private static FiltersManager sPreviewInstance = null;
    private static FiltersManager sHighresInstance = null;

    public FiltersManager() {
        init();
@@ -41,9 +42,17 @@ public class FiltersManager extends BaseFiltersManager {
        return sInstance;
    }

    public static FiltersManager getHighresManager() {
        if (sHighresInstance == null) {
            sHighresInstance = new FiltersManager();
        }
        return sHighresInstance;
    }

    public static void reset() {
        sInstance = null;
        sPreviewInstance = null;
        sHighresInstance = null;
    }

}