diff options
-rw-r--r-- | core/java/android/content/pm/PackageParser.java | 2 | ||||
-rw-r--r-- | core/java/android/content/res/CompatibilityInfo.java | 3 | ||||
-rw-r--r-- | core/java/android/view/SurfaceView.java | 9 | ||||
-rw-r--r-- | core/java/android/view/WindowManager.java | 9 | ||||
-rw-r--r-- | services/java/com/android/server/PackageManagerService.java | 16 |
5 files changed, 25 insertions, 14 deletions
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index 903f482..cebb696 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -979,12 +979,12 @@ public class PackageParser { /** * TODO: enable this before code freeze. b/1967935 * * - */ if ((densities == null || densities.length == 0) && (pkg.applicationInfo.targetSdkVersion >= android.os.Build.VERSION_CODES.CUR_DEVELOPMENT)) { pkg.supportsDensities = ApplicationInfo.ANY_DENSITIES_ARRAY; } + */ return pkg; } diff --git a/core/java/android/content/res/CompatibilityInfo.java b/core/java/android/content/res/CompatibilityInfo.java index 25e7a68..6e34cc8 100644 --- a/core/java/android/content/res/CompatibilityInfo.java +++ b/core/java/android/content/res/CompatibilityInfo.java @@ -224,8 +224,7 @@ public class CompatibilityInfo { if (DBG) Log.d(TAG, "no translation required"); return null; } - if (!isScalingRequired() || - (params.flags & WindowManager.LayoutParams.FLAG_NO_COMPATIBILITY_SCALING) != 0) { + if (!isScalingRequired()) { return null; } return new Translator(); diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java index 187767b..25bbb6a 100644 --- a/core/java/android/view/SurfaceView.java +++ b/core/java/android/view/SurfaceView.java @@ -258,7 +258,7 @@ public class SurfaceView extends View { // scales the event back to the pre-scaled coordinates for such surface. if (mScaled) { MotionEvent scaledBack = MotionEvent.obtain(event); - scaledBack.scale(mTranslator.applicationScale); + mTranslator.translateEventInScreenToAppWindow(event); try { return super.dispatchTouchEvent(scaledBack); } finally { @@ -297,7 +297,8 @@ public class SurfaceView extends View { if (!mHaveFrame) { return; } - mTranslator = ((ViewRoot)getRootView().getParent()).mTranslator; + ViewRoot viewRoot = (ViewRoot) getRootView().getParent(); + mTranslator = viewRoot.mTranslator; float appScale = mTranslator == null ? 1.0f : mTranslator.applicationScale; @@ -357,8 +358,10 @@ public class SurfaceView extends View { | WindowManager.LayoutParams.FLAG_SCALED | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE - | WindowManager.LayoutParams.FLAG_NO_COMPATIBILITY_SCALING ; + if (!getContext().getResources().getCompatibilityInfo().supportsScreen()) { + mLayout.flags |= WindowManager.LayoutParams.FLAG_COMPATIBLE_WINDOW; + } mLayout.memoryType = mRequestedType; diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java index ba3bfa7..6a26a31 100644 --- a/core/java/android/view/WindowManager.java +++ b/core/java/android/view/WindowManager.java @@ -483,19 +483,12 @@ public interface WindowManager extends ViewManager { * {@hide} */ public static final int FLAG_SHOW_WHEN_LOCKED = 0x00080000; - /** Window flag: special flag to let a window ignore the compatibility scaling. - * This is used by SurfaceView to pass this info into ViewRoot, and not used - * by WindowManager. - * - * {@hide} */ - public static final int FLAG_NO_COMPATIBILITY_SCALING = 0x00100000; - /** Window flag: special flag to limit the size of the window to be * original size ([320x480] x density). Used to create window for applications * running under compatibility mode. * * {@hide} */ - public static final int FLAG_COMPATIBLE_WINDOW = 0x00200000; + public static final int FLAG_COMPATIBLE_WINDOW = 0x00100000; /** Window flag: a special option intended for system dialogs. When * this flag is set, the window will demand focus unconditionally when diff --git a/services/java/com/android/server/PackageManagerService.java b/services/java/com/android/server/PackageManagerService.java index 682eaa7..7025e79 100644 --- a/services/java/com/android/server/PackageManagerService.java +++ b/services/java/com/android/server/PackageManagerService.java @@ -4908,6 +4908,22 @@ class PackageManagerService extends IPackageManager.Stub { pw.print(" resourcePath="); pw.println(ps.resourcePathString); if (ps.pkg != null) { pw.print(" dataDir="); pw.println(ps.pkg.applicationInfo.dataDir); + pw.print(" targetSdk="); pw.println(ps.pkg.applicationInfo.targetSdkVersion); + pw.print(" densities="); pw.println(ps.pkg.supportsDensityList); + ArrayList<String> screens = new ArrayList<String>(); + if ((ps.pkg.applicationInfo.flags & + ApplicationInfo.FLAG_SUPPORTS_NORMAL_SCREENS) != 0) { + screens.add("medium"); + } + if ((ps.pkg.applicationInfo.flags & + ApplicationInfo.FLAG_SUPPORTS_LARGE_SCREENS) != 0) { + screens.add("large"); + } + if ((ps.pkg.applicationInfo.flags & + ApplicationInfo.FLAG_SUPPORTS_SMALL_SCREENS) != 0) { + screens.add("small,"); + } + pw.print(" supportsScreens="); pw.println(screens); } pw.print(" timeStamp="); pw.println(ps.getTimeStampStr()); pw.print(" signatures="); pw.println(ps.signatures); |