Add android:hardwareAccelerated to Activity.
Hardware acceleration can now be enabled/disabled locally on each activity
declared in the manifest. It can also be enabled/disabled directly on a
window through the WindowManager.LayoutParams.
Change-Id: I91dd0b26c4e7eb8cd7288e523ed6b7bda6d0990b
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index bc78d37..8c9cc4e 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -16,9 +16,6 @@
package android.content.pm;
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
import android.content.ComponentName;
import android.content.Intent;
import android.content.IntentFilter;
@@ -30,14 +27,14 @@
import android.os.Build;
import android.os.Bundle;
import android.os.PatternMatcher;
-import android.provider.Settings;
import android.util.AttributeSet;
import android.util.Config;
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.TypedValue;
-
import com.android.internal.util.XmlUtils;
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
import java.io.File;
import java.io.IOException;
@@ -48,7 +45,6 @@
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
-import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
@@ -1535,11 +1531,9 @@
ai.flags |= ApplicationInfo.FLAG_VM_SAFE_MODE;
}
- if (sa.getBoolean(
+ boolean hardwareAccelerated = sa.getBoolean(
com.android.internal.R.styleable.AndroidManifestApplication_hardwareAccelerated,
- false)) {
- ai.flags |= ApplicationInfo.FLAG_HARDWARE_ACCELERATED;
- }
+ false);
if (sa.getBoolean(
com.android.internal.R.styleable.AndroidManifestApplication_hasCode,
@@ -1638,7 +1632,8 @@
String tagName = parser.getName();
if (tagName.equals("activity")) {
- Activity a = parseActivity(owner, res, parser, attrs, flags, outError, false);
+ Activity a = parseActivity(owner, res, parser, attrs, flags, outError, false,
+ hardwareAccelerated);
if (a == null) {
mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED;
return false;
@@ -1647,7 +1642,7 @@
owner.activities.add(a);
} else if (tagName.equals("receiver")) {
- Activity a = parseActivity(owner, res, parser, attrs, flags, outError, true);
+ Activity a = parseActivity(owner, res, parser, attrs, flags, outError, true, false);
if (a == null) {
mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED;
return false;
@@ -1782,7 +1777,8 @@
private Activity parseActivity(Package owner, Resources res,
XmlPullParser parser, AttributeSet attrs, int flags, String[] outError,
- boolean receiver) throws XmlPullParserException, IOException {
+ boolean receiver, boolean hardwareAccelerated)
+ throws XmlPullParserException, IOException {
TypedArray sa = res.obtainAttributes(attrs,
com.android.internal.R.styleable.AndroidManifestActivity);
@@ -1892,8 +1888,14 @@
false)) {
a.info.flags |= ActivityInfo.FLAG_IMMERSIVE;
}
-
+
if (!receiver) {
+ if (sa.getBoolean(
+ com.android.internal.R.styleable.AndroidManifestActivity_hardwareAccelerated,
+ hardwareAccelerated)) {
+ a.info.flags |= ActivityInfo.FLAG_HARDWARE_ACCELERATED;
+ }
+
a.info.launchMode = sa.getInt(
com.android.internal.R.styleable.AndroidManifestActivity_launchMode,
ActivityInfo.LAUNCH_MULTIPLE);