summaryrefslogtreecommitdiffstats
path: root/core/java
diff options
context:
space:
mode:
authorAlan Viverette <alanv@google.com>2015-03-18 14:21:04 -0700
committerAlan Viverette <alanv@google.com>2015-03-18 14:21:04 -0700
commit9b0ab65ed46be992dd71b5f811bb972168e51c36 (patch)
tree6a636e2c4c99b8e6a2a0328c0f4908ae0b6f6636 /core/java
parent6022edc53814a0d6a2d5884bfc0e496151e96cf9 (diff)
downloadframeworks_base-9b0ab65ed46be992dd71b5f811bb972168e51c36.zip
frameworks_base-9b0ab65ed46be992dd71b5f811bb972168e51c36.tar.gz
frameworks_base-9b0ab65ed46be992dd71b5f811bb972168e51c36.tar.bz2
Enable/disable hardware rendering on windows by application tag
Previously, hardware rendering cannot be enabled or disabled on windows created without a parent activity (e.g. by services) by setting the <application> tag, "android:hardwareAccelerated" in AndroidManifest.xml. It's enabled by default in Android L from the commit, 5e1565ead6dbb7d5c414522591f61b16a23de1c3. This patch provides a way of setting hardware rendering for that case. Change-Id: I60ee9566e99db39cd661fe6f196f43c3968b311a Signed-off-by: Dohyun Lee <dohyun.lee@lge.com>
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/content/pm/ApplicationInfo.java9
-rw-r--r--core/java/android/content/pm/PackageParser.java1
-rw-r--r--core/java/android/view/WindowManagerGlobal.java10
3 files changed, 15 insertions, 5 deletions
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 class ApplicationInfo extends PackageItemInfo implements Parcelable {
*/
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 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
}
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 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
descriptionRes = orig.descriptionRes;
uiOptions = orig.uiOptions;
backupAgentName = orig.backupAgentName;
+ hardwareAccelerated = orig.hardwareAccelerated;
}
@@ -773,6 +780,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
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 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
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 @@ public class PackageParser {
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 @@ public final class WindowManagerGlobal {
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;
}
}