diff options
| -rw-r--r-- | core/java/android/os/GraphicsEnvironment.java | 53 | ||||
| -rw-r--r-- | core/jni/android_os_GraphicsEnvironment.cpp | 7 |
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) }, }; |