Loading core/java/android/app/ActivityManagerNative.java +28 −26 Original line number Diff line number Diff line Loading @@ -2681,19 +2681,10 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM case REPORT_SIZE_CONFIGURATIONS: { data.enforceInterface(IActivityManager.descriptor); IBinder token = data.readStrongBinder(); int horizontalSize = data.readInt(); int[] horizontal = null; if (horizontalSize > 0) { horizontal = new int[horizontalSize]; data.readIntArray(horizontal); } int[] vertical = null; int verticalSize = data.readInt(); if (verticalSize > 0) { vertical = new int[verticalSize]; data.readIntArray(vertical); } reportSizeConfigurations(token, horizontal, vertical); int[] horizontal = readIntArray(data); int[] vertical = readIntArray(data); int[] smallest = readIntArray(data); reportSizeConfigurations(token, horizontal, vertical, smallest); return true; } case SUPPRESS_RESIZE_CONFIG_CHANGES_TRANSACTION: { Loading @@ -2715,6 +2706,16 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM return super.onTransact(code, data, reply, flags); } private int[] readIntArray(Parcel data) { int[] smallest = null; int smallestSize = data.readInt(); if (smallestSize > 0) { smallest = new int[smallestSize]; data.readIntArray(smallest); } return smallest; } public IBinder asBinder() { return this; } Loading Loading @@ -6241,29 +6242,30 @@ class ActivityManagerProxy implements IActivityManager @Override public void reportSizeConfigurations(IBinder token, int[] horizontalSizeConfiguration, int[] verticalSizeConfigurations) throws RemoteException { int[] verticalSizeConfigurations, int[] smallestSizeConfigurations) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); data.writeInterfaceToken(IActivityManager.descriptor); data.writeStrongBinder(token); if (horizontalSizeConfiguration == null) { data.writeInt(0); } else { data.writeInt(horizontalSizeConfiguration.length); data.writeIntArray(horizontalSizeConfiguration); } if (verticalSizeConfigurations == null) { data.writeInt(0); } else { data.writeInt(verticalSizeConfigurations.length); data.writeIntArray(verticalSizeConfigurations); } writeIntArray(horizontalSizeConfiguration, data); writeIntArray(verticalSizeConfigurations, data); writeIntArray(smallestSizeConfigurations, data); mRemote.transact(REPORT_SIZE_CONFIGURATIONS, data, reply, 0); reply.readException(); data.recycle(); reply.recycle(); } private static void writeIntArray(int[] array, Parcel data) { if (array == null) { data.writeInt(0); } else { data.writeInt(array.length); data.writeIntArray(array); } } @Override public void suppressResizeConfigChanges(boolean suppress) throws RemoteException { Parcel data = Parcel.obtain(); Loading core/java/android/app/ActivityThread.java +9 −16 Original line number Diff line number Diff line Loading @@ -88,6 +88,7 @@ import android.util.LogPrinter; import android.util.Pair; import android.util.PrintWriterPrinter; import android.util.Slog; import android.util.SparseIntArray; import android.util.SuperNotCalledException; import android.view.Display; import android.view.HardwareRenderer; Loading Loading @@ -2638,32 +2639,24 @@ public final class ActivityThread { if (configurations == null) { return; } IntArray horizontal = new IntArray(); IntArray vertical = new IntArray(); SparseIntArray horizontal = new SparseIntArray(); SparseIntArray vertical = new SparseIntArray(); SparseIntArray smallest = new SparseIntArray(); for (int i = configurations.length - 1; i >= 0; i--) { Configuration config = configurations[i]; if (config.screenHeightDp != Configuration.SCREEN_HEIGHT_DP_UNDEFINED) { vertical.add(config.screenHeightDp); vertical.put(config.screenHeightDp, 0); } if (config.screenWidthDp != Configuration.SCREEN_WIDTH_DP_UNDEFINED) { horizontal.add(config.screenWidthDp); horizontal.put(config.screenWidthDp, 0); } if (config.smallestScreenWidthDp != Configuration.SMALLEST_SCREEN_WIDTH_DP_UNDEFINED) { vertical.add(config.smallestScreenWidthDp); horizontal.add(config.smallestScreenWidthDp); smallest.put(config.smallestScreenWidthDp, 0); } } int[] horizontalArray = null; if (horizontal.size() > 0) { horizontalArray = horizontal.toArray(); } int[] verticalArray = null; if (vertical.size() > 0) { verticalArray = vertical.toArray(); } try { ActivityManagerNative.getDefault().reportSizeConfigurations(r.token, horizontalArray, verticalArray); ActivityManagerNative.getDefault().reportSizeConfigurations(r.token, horizontal.copyKeys(), vertical.copyKeys(), smallest.copyKeys()); } catch (RemoteException ex) { } Loading core/java/android/app/IActivityManager.java +2 −1 Original line number Diff line number Diff line Loading @@ -123,7 +123,8 @@ public interface IActivityManager extends IInterface { public void activitySlept(IBinder token) throws RemoteException; public void activityDestroyed(IBinder token) throws RemoteException; public void reportSizeConfigurations(IBinder token, int[] horizontalSizeConfiguration, int[] verticalSizeConfigurations) throws RemoteException; int[] verticalSizeConfigurations, int[] smallestWidthConfigurations) throws RemoteException; public String getCallingPackage(IBinder token) throws RemoteException; public ComponentName getCallingActivity(IBinder token) throws RemoteException; public List<IAppTask> getAppTasks(String callingPackage) throws RemoteException; Loading core/java/android/util/SparseIntArray.java +14 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ package android.util; import com.android.internal.util.ArrayUtils; import com.android.internal.util.GrowingArrayUtils; import java.util.Arrays; import libcore.util.EmptyArray; /** Loading Loading @@ -238,6 +240,18 @@ public class SparseIntArray implements Cloneable { mSize++; } /** * Provides a copy of keys. * * @hide * */ public int[] copyKeys() { if (size() == 0) { return null; } return Arrays.copyOf(mKeys, size()); } /** * {@inheritDoc} * Loading services/core/java/com/android/server/am/ActivityManagerService.java +2 −2 Original line number Diff line number Diff line Loading @@ -6527,7 +6527,7 @@ public final class ActivityManagerService extends ActivityManagerNative @Override public void reportSizeConfigurations(IBinder token, int[] horizontalSizeConfiguration, int[] verticalSizeConfigurations) { int[] verticalSizeConfigurations, int[] smallestSizeConfigurations) { if (DEBUG_CONFIGURATION) Slog.v(TAG, "Report configuration: " + token + " " + horizontalSizeConfiguration + " " + verticalSizeConfigurations); synchronized (this) { Loading @@ -6537,7 +6537,7 @@ public final class ActivityManagerService extends ActivityManagerNative + "found for: " + token); } record.setSizeConfigurations(horizontalSizeConfiguration, verticalSizeConfigurations); verticalSizeConfigurations, smallestSizeConfigurations); } } Loading Loading
core/java/android/app/ActivityManagerNative.java +28 −26 Original line number Diff line number Diff line Loading @@ -2681,19 +2681,10 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM case REPORT_SIZE_CONFIGURATIONS: { data.enforceInterface(IActivityManager.descriptor); IBinder token = data.readStrongBinder(); int horizontalSize = data.readInt(); int[] horizontal = null; if (horizontalSize > 0) { horizontal = new int[horizontalSize]; data.readIntArray(horizontal); } int[] vertical = null; int verticalSize = data.readInt(); if (verticalSize > 0) { vertical = new int[verticalSize]; data.readIntArray(vertical); } reportSizeConfigurations(token, horizontal, vertical); int[] horizontal = readIntArray(data); int[] vertical = readIntArray(data); int[] smallest = readIntArray(data); reportSizeConfigurations(token, horizontal, vertical, smallest); return true; } case SUPPRESS_RESIZE_CONFIG_CHANGES_TRANSACTION: { Loading @@ -2715,6 +2706,16 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM return super.onTransact(code, data, reply, flags); } private int[] readIntArray(Parcel data) { int[] smallest = null; int smallestSize = data.readInt(); if (smallestSize > 0) { smallest = new int[smallestSize]; data.readIntArray(smallest); } return smallest; } public IBinder asBinder() { return this; } Loading Loading @@ -6241,29 +6242,30 @@ class ActivityManagerProxy implements IActivityManager @Override public void reportSizeConfigurations(IBinder token, int[] horizontalSizeConfiguration, int[] verticalSizeConfigurations) throws RemoteException { int[] verticalSizeConfigurations, int[] smallestSizeConfigurations) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); data.writeInterfaceToken(IActivityManager.descriptor); data.writeStrongBinder(token); if (horizontalSizeConfiguration == null) { data.writeInt(0); } else { data.writeInt(horizontalSizeConfiguration.length); data.writeIntArray(horizontalSizeConfiguration); } if (verticalSizeConfigurations == null) { data.writeInt(0); } else { data.writeInt(verticalSizeConfigurations.length); data.writeIntArray(verticalSizeConfigurations); } writeIntArray(horizontalSizeConfiguration, data); writeIntArray(verticalSizeConfigurations, data); writeIntArray(smallestSizeConfigurations, data); mRemote.transact(REPORT_SIZE_CONFIGURATIONS, data, reply, 0); reply.readException(); data.recycle(); reply.recycle(); } private static void writeIntArray(int[] array, Parcel data) { if (array == null) { data.writeInt(0); } else { data.writeInt(array.length); data.writeIntArray(array); } } @Override public void suppressResizeConfigChanges(boolean suppress) throws RemoteException { Parcel data = Parcel.obtain(); Loading
core/java/android/app/ActivityThread.java +9 −16 Original line number Diff line number Diff line Loading @@ -88,6 +88,7 @@ import android.util.LogPrinter; import android.util.Pair; import android.util.PrintWriterPrinter; import android.util.Slog; import android.util.SparseIntArray; import android.util.SuperNotCalledException; import android.view.Display; import android.view.HardwareRenderer; Loading Loading @@ -2638,32 +2639,24 @@ public final class ActivityThread { if (configurations == null) { return; } IntArray horizontal = new IntArray(); IntArray vertical = new IntArray(); SparseIntArray horizontal = new SparseIntArray(); SparseIntArray vertical = new SparseIntArray(); SparseIntArray smallest = new SparseIntArray(); for (int i = configurations.length - 1; i >= 0; i--) { Configuration config = configurations[i]; if (config.screenHeightDp != Configuration.SCREEN_HEIGHT_DP_UNDEFINED) { vertical.add(config.screenHeightDp); vertical.put(config.screenHeightDp, 0); } if (config.screenWidthDp != Configuration.SCREEN_WIDTH_DP_UNDEFINED) { horizontal.add(config.screenWidthDp); horizontal.put(config.screenWidthDp, 0); } if (config.smallestScreenWidthDp != Configuration.SMALLEST_SCREEN_WIDTH_DP_UNDEFINED) { vertical.add(config.smallestScreenWidthDp); horizontal.add(config.smallestScreenWidthDp); smallest.put(config.smallestScreenWidthDp, 0); } } int[] horizontalArray = null; if (horizontal.size() > 0) { horizontalArray = horizontal.toArray(); } int[] verticalArray = null; if (vertical.size() > 0) { verticalArray = vertical.toArray(); } try { ActivityManagerNative.getDefault().reportSizeConfigurations(r.token, horizontalArray, verticalArray); ActivityManagerNative.getDefault().reportSizeConfigurations(r.token, horizontal.copyKeys(), vertical.copyKeys(), smallest.copyKeys()); } catch (RemoteException ex) { } Loading
core/java/android/app/IActivityManager.java +2 −1 Original line number Diff line number Diff line Loading @@ -123,7 +123,8 @@ public interface IActivityManager extends IInterface { public void activitySlept(IBinder token) throws RemoteException; public void activityDestroyed(IBinder token) throws RemoteException; public void reportSizeConfigurations(IBinder token, int[] horizontalSizeConfiguration, int[] verticalSizeConfigurations) throws RemoteException; int[] verticalSizeConfigurations, int[] smallestWidthConfigurations) throws RemoteException; public String getCallingPackage(IBinder token) throws RemoteException; public ComponentName getCallingActivity(IBinder token) throws RemoteException; public List<IAppTask> getAppTasks(String callingPackage) throws RemoteException; Loading
core/java/android/util/SparseIntArray.java +14 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ package android.util; import com.android.internal.util.ArrayUtils; import com.android.internal.util.GrowingArrayUtils; import java.util.Arrays; import libcore.util.EmptyArray; /** Loading Loading @@ -238,6 +240,18 @@ public class SparseIntArray implements Cloneable { mSize++; } /** * Provides a copy of keys. * * @hide * */ public int[] copyKeys() { if (size() == 0) { return null; } return Arrays.copyOf(mKeys, size()); } /** * {@inheritDoc} * Loading
services/core/java/com/android/server/am/ActivityManagerService.java +2 −2 Original line number Diff line number Diff line Loading @@ -6527,7 +6527,7 @@ public final class ActivityManagerService extends ActivityManagerNative @Override public void reportSizeConfigurations(IBinder token, int[] horizontalSizeConfiguration, int[] verticalSizeConfigurations) { int[] verticalSizeConfigurations, int[] smallestSizeConfigurations) { if (DEBUG_CONFIGURATION) Slog.v(TAG, "Report configuration: " + token + " " + horizontalSizeConfiguration + " " + verticalSizeConfigurations); synchronized (this) { Loading @@ -6537,7 +6537,7 @@ public final class ActivityManagerService extends ActivityManagerNative + "found for: " + token); } record.setSizeConfigurations(horizontalSizeConfiguration, verticalSizeConfigurations); verticalSizeConfigurations, smallestSizeConfigurations); } } Loading