summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/os/GraphicsEnvironment.java53
-rw-r--r--core/jni/android_os_GraphicsEnvironment.cpp7
2 files changed, 32 insertions, 28 deletions
diff --git a/core/java/android/os/GraphicsEnvironment.java b/core/java/android/os/GraphicsEnvironment.java
index f83acb6b7972..bc85d4230f3a 100644
--- a/core/java/android/os/GraphicsEnvironment.java
+++ b/core/java/android/os/GraphicsEnvironment.java
@@ -133,7 +133,7 @@ public class GraphicsEnvironment {
}
/**
- * Selectively enable ANGLE for applications
+ * Pass ANGLE details down to trigger enable logic
*/
private static void setupAngle(Context context) {
@@ -143,39 +143,42 @@ public class GraphicsEnvironment {
String packageName = context.getPackageName();
- // Only provide an ANGLE namespace if the package name matches setting
+ boolean optIn = false;
+
if ((angleEnabledApp != null && packageName != null)
&& (!angleEnabledApp.isEmpty() && !packageName.isEmpty())
&& angleEnabledApp.equals(packageName)) {
- if (DEBUG) Log.v(TAG, "ANGLE enabled for " + packageName);
+ if (DEBUG) Log.v(TAG, packageName + " opted in for ANGLE via Developer Setting");
- ApplicationInfo angleInfo;
+ optIn = true;
+ }
- try {
- angleInfo = context.getPackageManager().getApplicationInfo(ANGLE_PACKAGE_NAME,
- PackageManager.MATCH_SYSTEM_ONLY);
- } catch (PackageManager.NameNotFoundException e) {
- Log.w(TAG, "ANGLE package '" + ANGLE_PACKAGE_NAME + "' not installed");
- return;
- }
+ ApplicationInfo angleInfo;
+
+ try {
+ angleInfo = context.getPackageManager().getApplicationInfo(ANGLE_PACKAGE_NAME,
+ PackageManager.MATCH_SYSTEM_ONLY);
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.w(TAG, "ANGLE package '" + ANGLE_PACKAGE_NAME + "' not installed");
+ return;
+ }
- String abi = chooseAbi(angleInfo);
+ String abi = chooseAbi(angleInfo);
- // Build a path that includes installed native libs and APK
- StringBuilder sb = new StringBuilder();
- sb.append(angleInfo.nativeLibraryDir)
- .append(File.pathSeparator)
- .append(angleInfo.sourceDir)
- .append("!/lib/")
- .append(abi);
- String paths = sb.toString();
+ // Build a path that includes installed native libs and APK
+ StringBuilder sb = new StringBuilder();
+ sb.append(angleInfo.nativeLibraryDir)
+ .append(File.pathSeparator)
+ .append(angleInfo.sourceDir)
+ .append("!/lib/")
+ .append(abi);
+ String paths = sb.toString();
- if (DEBUG) Log.v(TAG, "ANGLE package libs: " + paths);
+ if (DEBUG) Log.v(TAG, "ANGLE package libs: " + paths);
- // Providing any path will trigger namespace creation
- setAnglePath(paths);
- }
+ // Further opt-in logic is handled in native, so pass relevant info down
+ setAngleInfo(paths, packageName, optIn);
}
/**
@@ -266,5 +269,5 @@ public class GraphicsEnvironment {
private static native void setLayerPaths(ClassLoader classLoader, String layerPaths);
private static native void setDebugLayers(String layers);
private static native void setDriverPath(String path);
- private static native void setAnglePath(String path);
+ private static native void setAngleInfo(String path, String appPackage, boolean optIn);
}
diff --git a/core/jni/android_os_GraphicsEnvironment.cpp b/core/jni/android_os_GraphicsEnvironment.cpp
index e3bec3cb29c9..e1411a53fcb3 100644
--- a/core/jni/android_os_GraphicsEnvironment.cpp
+++ b/core/jni/android_os_GraphicsEnvironment.cpp
@@ -28,9 +28,10 @@ void setDriverPath(JNIEnv* env, jobject clazz, jstring path) {
android::GraphicsEnv::getInstance().setDriverPath(pathChars.c_str());
}
-void setAnglePath(JNIEnv* env, jobject clazz, jstring path) {
+void setAngleInfo_native(JNIEnv* env, jobject clazz, jstring path, jstring appName, jboolean optIn) {
ScopedUtfChars pathChars(env, path);
- android::GraphicsEnv::getInstance().setAnglePath(pathChars.c_str());
+ ScopedUtfChars appNameChars(env, appName);
+ android::GraphicsEnv::getInstance().setAngleInfo(pathChars.c_str(), appNameChars.c_str(), optIn);
}
void setLayerPaths_native(JNIEnv* env, jobject clazz, jobject classLoader, jstring layerPaths) {
@@ -49,7 +50,7 @@ void setDebugLayers_native(JNIEnv* env, jobject clazz, jstring layers) {
const JNINativeMethod g_methods[] = {
{ "setDriverPath", "(Ljava/lang/String;)V", reinterpret_cast<void*>(setDriverPath) },
- { "setAnglePath", "(Ljava/lang/String;)V", reinterpret_cast<void*>(setAnglePath) },
+ { "setAngleInfo", "(Ljava/lang/String;Ljava/lang/String;Z)V", reinterpret_cast<void*>(setAngleInfo_native) },
{ "setLayerPaths", "(Ljava/lang/ClassLoader;Ljava/lang/String;)V", reinterpret_cast<void*>(setLayerPaths_native) },
{ "setDebugLayers", "(Ljava/lang/String;)V", reinterpret_cast<void*>(setDebugLayers_native) },
};