* Reverted the change in PackageParser that I checked by accident
* More surface view fix. - correct event translation on surface view. - use compatible window * removed FLAG_NO_COMPATIBILITY_SCALE. It was my misunderstanding of how SurfaceView works, and this was not necessary. * Added compatibility related info to package dumpsys
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -257,7 +257,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 {
|
||||
@@ -296,7 +296,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;
|
||||
|
||||
@@ -356,8 +357,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;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -4905,6 +4905,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);
|
||||
|
||||
Reference in New Issue
Block a user