Merge "Enable/disable hardware rendering on windows by application tag"
diff --git a/api/current.txt b/api/current.txt
index 9f54b85..988722d 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -8673,6 +8673,7 @@
field public int descriptionRes;
field public boolean enabled;
field public int flags;
+ field public boolean hardwareAccelerated;
field public int largestWidthLimitDp;
field public java.lang.String manageSpaceActivityName;
field public java.lang.String nativeLibraryDir;
diff --git a/api/system-current.txt b/api/system-current.txt
index 845c4ff..942a2cb 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -8888,6 +8888,7 @@
field public int descriptionRes;
field public boolean enabled;
field public int flags;
+ field public boolean hardwareAccelerated;
field public int largestWidthLimitDp;
field public java.lang.String manageSpaceActivityName;
field public java.lang.String nativeLibraryDir;
diff --git a/core/java/android/content/pm/ApplicationInfo.java b/core/java/android/content/pm/ApplicationInfo.java
index e1a2aa9..5b7896a 100644
--- a/core/java/android/content/pm/ApplicationInfo.java
+++ b/core/java/android/content/pm/ApplicationInfo.java
@@ -598,6 +598,11 @@
*/
public int installLocation = PackageInfo.INSTALL_LOCATION_UNSPECIFIED;
+ /**
+ * True when the application's rendering should be hardware accelerated.
+ */
+ public boolean hardwareAccelerated;
+
public void dump(Printer pw, String prefix) {
super.dumpFront(pw, prefix);
if (className != null) {
@@ -637,6 +642,7 @@
}
pw.println(prefix + "enabled=" + enabled + " targetSdkVersion=" + targetSdkVersion
+ " versionCode=" + versionCode);
+ pw.println(prefix + "hardwareAccelerated=" + hardwareAccelerated);
if (manageSpaceActivityName != null) {
pw.println(prefix + "manageSpaceActivityName="+manageSpaceActivityName);
}
@@ -722,6 +728,7 @@
descriptionRes = orig.descriptionRes;
uiOptions = orig.uiOptions;
backupAgentName = orig.backupAgentName;
+ hardwareAccelerated = orig.hardwareAccelerated;
}
@@ -773,6 +780,7 @@
dest.writeString(backupAgentName);
dest.writeInt(descriptionRes);
dest.writeInt(uiOptions);
+ dest.writeInt(hardwareAccelerated ? 1 : 0);
}
public static final Parcelable.Creator<ApplicationInfo> CREATOR
@@ -823,6 +831,7 @@
backupAgentName = source.readString();
descriptionRes = source.readInt();
uiOptions = source.readInt();
+ hardwareAccelerated = source.readInt() != 0;
}
/**
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index 1140756..a245ba5 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -2519,6 +2519,7 @@
owner.baseHardwareAccelerated = sa.getBoolean(
com.android.internal.R.styleable.AndroidManifestApplication_hardwareAccelerated,
owner.applicationInfo.targetSdkVersion >= Build.VERSION_CODES.ICE_CREAM_SANDWICH);
+ ai.hardwareAccelerated = owner.baseHardwareAccelerated;
if (sa.getBoolean(
com.android.internal.R.styleable.AndroidManifestApplication_hasCode,
diff --git a/core/java/android/view/WindowManagerGlobal.java b/core/java/android/view/WindowManagerGlobal.java
index 1cebe3f..57558ff 100644
--- a/core/java/android/view/WindowManagerGlobal.java
+++ b/core/java/android/view/WindowManagerGlobal.java
@@ -249,12 +249,12 @@
final WindowManager.LayoutParams wparams = (WindowManager.LayoutParams) params;
if (parentWindow != null) {
parentWindow.adjustLayoutParamsForSubWindow(wparams);
- } else if (ActivityManager.isHighEndGfx()) {
- // If there's no parent and we're running on L or above (or in the
- // system context), assume we want hardware acceleration.
+ } else {
+ // If there's no parent, then hardware acceleration for this view is
+ // set from the application's hardware acceleration setting.
final Context context = view.getContext();
- if (context != null && context.getApplicationInfo().targetSdkVersion
- >= Build.VERSION_CODES.LOLLIPOP) {
+ if (context != null
+ && context.getApplicationInfo().hardwareAccelerated) {
wparams.flags |= WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;
}
}