Skip to content
Snippets Groups Projects
Commit f4dd743a authored by Jean-François's avatar Jean-François Committed by Jean-François Geyelin
Browse files

Throw an exception when using RenderScript ScriptC with an API level above 34

Bug: 297019750
Test: m -j; m cts -j; cts-tradefed run commandAndExit cts --skip-system-status-check com.android.compatibility.common.tradefed.targetprep.NetworkConnectivityChecker --skip-device-info -m RenderscriptTest

Change-Id: I112961a279890195aa0387b299844027e483715e
parent 15181c71
No related branches found
No related tags found
No related merge requests found
......@@ -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,19 @@ public class ScriptC extends Script {
setID(id);
}
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);
......@@ -126,6 +150,7 @@ public class ScriptC extends Script {
private static synchronized long internalStringCreate(RenderScript rs, String resName, byte[] bitcode) {
// Log.v(TAG, "Create script for resource = " + resName);
throwExceptionIfSDKTooHigh();
return rs.nScriptCCreate(resName, RenderScript.getCachePath(), bitcode, bitcode.length);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment