Merge changes I4ad08873,If0562677,I5fe6ba32 into jb-mr1-dev
* changes:
Don't auto-discover peers until scan requested.
Use wfdInfo to filter available sinks.
Allow adb shell am display-size to use bigger sizes.
diff --git a/cmds/am/src/com/android/commands/am/Am.java b/cmds/am/src/com/android/commands/am/Am.java
index 89287ad..bc9e74e 100644
--- a/cmds/am/src/com/android/commands/am/Am.java
+++ b/cmds/am/src/com/android/commands/am/Am.java
@@ -1187,32 +1187,26 @@
private void runDisplaySize() throws Exception {
String size = nextArgRequired();
- int m, n;
+ int w, h;
if ("reset".equals(size)) {
- m = n = -1;
+ w = h = -1;
} else {
int div = size.indexOf('x');
if (div <= 0 || div >= (size.length()-1)) {
System.err.println("Error: bad size " + size);
return;
}
- String mstr = size.substring(0, div);
- String nstr = size.substring(div+1);
+ String wstr = size.substring(0, div);
+ String hstr = size.substring(div+1);
try {
- m = Integer.parseInt(mstr);
- n = Integer.parseInt(nstr);
+ w = Integer.parseInt(wstr);
+ h = Integer.parseInt(hstr);
} catch (NumberFormatException e) {
System.err.println("Error: bad number " + e);
return;
}
}
- if (m < n) {
- int tmp = m;
- m = n;
- n = tmp;
- }
-
IWindowManager wm = IWindowManager.Stub.asInterface(ServiceManager.checkService(
Context.WINDOW_SERVICE));
if (wm == null) {
@@ -1221,9 +1215,9 @@
}
try {
- if (m >= 0 && n >= 0) {
+ if (w >= 0 && h >= 0) {
// TODO(multidisplay): For now Configuration only applies to main screen.
- wm.setForcedDisplaySize(Display.DEFAULT_DISPLAY, m, n);
+ wm.setForcedDisplaySize(Display.DEFAULT_DISPLAY, w, h);
} else {
wm.clearForcedDisplaySize(Display.DEFAULT_DISPLAY);
}
@@ -1444,7 +1438,7 @@
" am clear-debug-app\n" +
" am monitor [--gdb <port>]\n" +
" am screen-compat [on|off] <PACKAGE>\n" +
- " am display-size [reset|MxN]\n" +
+ " am display-size [reset|WxH]\n" +
" am display-density [reset|DENSITY]\n" +
" am to-uri [INTENT]\n" +
" am to-intent-uri [INTENT]\n" +
diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl
index dae5c0a..a64cbf7 100644
--- a/core/java/android/view/IWindowManager.aidl
+++ b/core/java/android/view/IWindowManager.aidl
@@ -59,7 +59,7 @@
in IInputContext inputContext);
boolean inputMethodClientHasFocus(IInputMethodClient client);
- void setForcedDisplaySize(int displayId, int longDimen, int shortDimen);
+ void setForcedDisplaySize(int displayId, int width, int height);
void clearForcedDisplaySize(int displayId);
void setForcedDisplayDensity(int displayId, int density);
void clearForcedDisplayDensity(int displayId);
diff --git a/services/java/com/android/server/display/WifiDisplayController.java b/services/java/com/android/server/display/WifiDisplayController.java
index 67691df..144b391 100644
--- a/services/java/com/android/server/display/WifiDisplayController.java
+++ b/services/java/com/android/server/display/WifiDisplayController.java
@@ -179,7 +179,6 @@
if (mWfdEnabling) {
mWfdEnabling = false;
setWfdEnabled(true);
- discoverPeers();
}
}
@@ -493,14 +492,8 @@
return; // done
}
- int port = DEFAULT_CONTROL_PORT;
- if (mConnectedDevice.deviceName.startsWith("DIRECT-")
- && mConnectedDevice.deviceName.endsWith("Broadcom")) {
- // These dongles ignore the port we broadcast in our WFD IE.
- port = 8554;
- }
-
final WifiDisplay display = createWifiDisplay(mConnectedDevice);
+ final int port = getPortNumber(mConnectedDevice);
final String iface = addr.getHostAddress() + ":" + port;
mPublishedDevice = mConnectedDevice;
@@ -517,9 +510,7 @@
if (mWifiP2pEnabled != enabled) {
mWifiP2pEnabled = enabled;
if (enabled) {
- if (mWfdEnabled) {
- discoverPeers();
- } else {
+ if (!mWfdEnabled) {
enableWfd();
}
} else {
@@ -647,12 +638,24 @@
return null;
}
+ private static int getPortNumber(WifiP2pDevice device) {
+ if (device.deviceName.startsWith("DIRECT-")
+ && device.deviceName.endsWith("Broadcom")) {
+ // These dongles ignore the port we broadcast in our WFD IE.
+ return 8554;
+ }
+ return DEFAULT_CONTROL_PORT;
+ }
+
private static boolean isWifiDisplay(WifiP2pDevice device) {
- // FIXME: the wfdInfo API doesn't work yet
- return device.deviceName.startsWith("DWD-")
- || device.deviceName.startsWith("DIRECT-")
- || device.deviceName.startsWith("CAVM-");
- //device.wfdInfo != null && device.wfdInfo.isWfdEnabled();
+ return device.wfdInfo != null
+ && device.wfdInfo.isWfdEnabled()
+ && isPrimarySinkDeviceType(device.wfdInfo.getDeviceType());
+ }
+
+ private static boolean isPrimarySinkDeviceType(int deviceType) {
+ return deviceType == WifiP2pWfdInfo.PRIMARY_SINK
+ || deviceType == WifiP2pWfdInfo.SOURCE_OR_PRIMARY_SINK;
}
private static String describeWifiP2pDevice(WifiP2pDevice device) {
diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java
index 622ab63..6951879 100755
--- a/services/java/com/android/server/wm/WindowManagerService.java
+++ b/services/java/com/android/server/wm/WindowManagerService.java
@@ -7831,24 +7831,22 @@
}
}
- public void setForcedDisplaySize(int displayId, int longDimen, int shortDimen) {
+ public void setForcedDisplaySize(int displayId, int width, int height) {
synchronized(mWindowMap) {
+ // Set some sort of reasonable bounds on the size of the display that we
+ // will try to emulate.
+ final int MIN_WIDTH = 200;
+ final int MIN_HEIGHT = 200;
+ final int MAX_SCALE = 2;
final DisplayContent displayContent = getDisplayContent(displayId);
- int width, height;
- if (displayContent.mInitialDisplayWidth < displayContent.mInitialDisplayHeight) {
- width = shortDimen < displayContent.mInitialDisplayWidth
- ? shortDimen : displayContent.mInitialDisplayWidth;
- height = longDimen < displayContent.mInitialDisplayHeight
- ? longDimen : displayContent.mInitialDisplayHeight;
- } else {
- width = longDimen < displayContent.mInitialDisplayWidth
- ? longDimen : displayContent.mInitialDisplayWidth;
- height = shortDimen < displayContent.mInitialDisplayHeight
- ? shortDimen : displayContent.mInitialDisplayHeight;
- }
+
+ width = Math.min(Math.max(width, MIN_WIDTH),
+ displayContent.mInitialDisplayWidth * MAX_SCALE);
+ height = Math.min(Math.max(height, MIN_HEIGHT),
+ displayContent.mInitialDisplayHeight * MAX_SCALE);
setForcedDisplaySizeLocked(displayContent, width, height);
- Settings.Secure.putString(mContext.getContentResolver(),
- Settings.Secure.DISPLAY_SIZE_FORCED, width + "," + height);
+ Settings.Global.putString(mContext.getContentResolver(),
+ Settings.Global.DISPLAY_SIZE_FORCED, width + "," + height);
}
}
@@ -7895,8 +7893,8 @@
private void readForcedDisplaySizeAndDensityLocked(final DisplayContent displayContent) {
boolean changed = false;
- final String sizeStr = Settings.Secure.getString(mContext.getContentResolver(),
- Settings.Secure.DISPLAY_SIZE_FORCED);
+ final String sizeStr = Settings.Global.getString(mContext.getContentResolver(),
+ Settings.Global.DISPLAY_SIZE_FORCED);
if (sizeStr != null && sizeStr.length() > 0) {
final int pos = sizeStr.indexOf(',');
if (pos > 0 && sizeStr.lastIndexOf(',') == pos) {
@@ -7917,8 +7915,8 @@
}
}
}
- final String densityStr = Settings.Secure.getString(mContext.getContentResolver(),
- Settings.Secure.DISPLAY_DENSITY_FORCED);
+ final String densityStr = Settings.Global.getString(mContext.getContentResolver(),
+ Settings.Global.DISPLAY_DENSITY_FORCED);
if (densityStr != null && densityStr.length() > 0) {
int density;
try {
@@ -7953,8 +7951,8 @@
final DisplayContent displayContent = getDisplayContent(displayId);
setForcedDisplaySizeLocked(displayContent, displayContent.mInitialDisplayWidth,
displayContent.mInitialDisplayHeight);
- Settings.Secure.putString(mContext.getContentResolver(),
- Settings.Secure.DISPLAY_SIZE_FORCED, "");
+ Settings.Global.putString(mContext.getContentResolver(),
+ Settings.Global.DISPLAY_SIZE_FORCED, "");
}
}
@@ -7962,8 +7960,8 @@
synchronized(mWindowMap) {
final DisplayContent displayContent = getDisplayContent(displayId);
setForcedDisplayDensityLocked(displayContent, density);
- Settings.Secure.putString(mContext.getContentResolver(),
- Settings.Secure.DISPLAY_DENSITY_FORCED, Integer.toString(density));
+ Settings.Global.putString(mContext.getContentResolver(),
+ Settings.Global.DISPLAY_DENSITY_FORCED, Integer.toString(density));
}
}