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

Commit b3f5ea7d authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Throw an exception when using RenderScript ScriptC with an API level...

Merge "Throw an exception when using RenderScript ScriptC with an API level above 34" into main am: 6958a778 am: f62b3d73 am: d8e470a5 am: 198a4943

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2743418



Change-Id: I45e1991b3bd60296c4cc31acfebf581a2c5d8dfc
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 49b6157f 198a4943
Loading
Loading
Loading
Loading
+28 −2
Original line number Diff line number Diff line
@@ -16,9 +16,12 @@

package android.renderscript;

import android.app.compat.CompatChanges;
import android.compat.annotation.ChangeId;
import android.compat.annotation.EnabledAfter;
import android.content.res.Resources;
import android.util.Slog;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;

@@ -34,6 +37,15 @@ import java.io.InputStream;
public class ScriptC extends Script {
    private static final String TAG = "ScriptC";

    /**
     * In targetSdkVersion 35 and above, Renderscript's ScriptC stops being supported
     * and an exception is thrown when the class is instantiated.
     * In targetSdkVersion 34 and below, Renderscript's ScriptC still works.
     */
    @ChangeId
    @EnabledAfter(targetSdkVersion = 35)
    private static final long RENDERSCRIPT_SCRIPTC_DEPRECATION_CHANGE_ID = 297019750L;

    /**
     * Only intended for use by the generated derived classes.
     *
@@ -89,7 +101,20 @@ public class ScriptC extends Script {
        setID(id);
    }

    private static synchronized long internalCreate(RenderScript rs, Resources resources, int resourceID) {
    private static void throwExceptionIfSDKTooHigh() {
        String message =
                "ScriptC scripts are not supported when targeting an API Level >= 35. Please refer "
                    + "to https://developer.android.com/guide/topics/renderscript/migration-guide "
                    + "for proposed alternatives.";
        Slog.w(TAG, message);
        if (CompatChanges.isChangeEnabled(RENDERSCRIPT_SCRIPTC_DEPRECATION_CHANGE_ID)) {
            throw new UnsupportedOperationException(message);
        }
    }

    private static synchronized long internalCreate(
            RenderScript rs, Resources resources, int resourceID) {
        throwExceptionIfSDKTooHigh();
        byte[] pgm;
        int pgmLength;
        InputStream is = resources.openRawResource(resourceID);
@@ -125,6 +150,7 @@ public class ScriptC extends Script {
    }

    private static synchronized long internalStringCreate(RenderScript rs, String resName, byte[] bitcode) {
        throwExceptionIfSDKTooHigh();
        //        Log.v(TAG, "Create script for resource = " + resName);
        return rs.nScriptCCreate(resName, RenderScript.getCachePath(), bitcode, bitcode.length);
    }