am 9ba2a188: Merge changes I4ad08873,If0562677,I5fe6ba32 into jb-mr1-dev

* commit '9ba2a188919e6e5bf8c042b26527fc090de677ef':
  Don't auto-discover peers until scan requested.
  Use wfdInfo to filter available sinks.
  Allow adb shell am display-size to use bigger sizes.
This commit is contained in:
Jeff Brown
2012-09-11 13:58:28 -07:00
committed by Android Git Automerger
4 changed files with 50 additions and 55 deletions

View File

@@ -1187,32 +1187,26 @@ public class Am {
private void runDisplaySize() throws Exception { private void runDisplaySize() throws Exception {
String size = nextArgRequired(); String size = nextArgRequired();
int m, n; int w, h;
if ("reset".equals(size)) { if ("reset".equals(size)) {
m = n = -1; w = h = -1;
} else { } else {
int div = size.indexOf('x'); int div = size.indexOf('x');
if (div <= 0 || div >= (size.length()-1)) { if (div <= 0 || div >= (size.length()-1)) {
System.err.println("Error: bad size " + size); System.err.println("Error: bad size " + size);
return; return;
} }
String mstr = size.substring(0, div); String wstr = size.substring(0, div);
String nstr = size.substring(div+1); String hstr = size.substring(div+1);
try { try {
m = Integer.parseInt(mstr); w = Integer.parseInt(wstr);
n = Integer.parseInt(nstr); h = Integer.parseInt(hstr);
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
System.err.println("Error: bad number " + e); System.err.println("Error: bad number " + e);
return; return;
} }
} }
if (m < n) {
int tmp = m;
m = n;
n = tmp;
}
IWindowManager wm = IWindowManager.Stub.asInterface(ServiceManager.checkService( IWindowManager wm = IWindowManager.Stub.asInterface(ServiceManager.checkService(
Context.WINDOW_SERVICE)); Context.WINDOW_SERVICE));
if (wm == null) { if (wm == null) {
@@ -1221,9 +1215,9 @@ public class Am {
} }
try { try {
if (m >= 0 && n >= 0) { if (w >= 0 && h >= 0) {
// TODO(multidisplay): For now Configuration only applies to main screen. // 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 { } else {
wm.clearForcedDisplaySize(Display.DEFAULT_DISPLAY); wm.clearForcedDisplaySize(Display.DEFAULT_DISPLAY);
} }
@@ -1444,7 +1438,7 @@ public class Am {
" am clear-debug-app\n" + " am clear-debug-app\n" +
" am monitor [--gdb <port>]\n" + " am monitor [--gdb <port>]\n" +
" am screen-compat [on|off] <PACKAGE>\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 display-density [reset|DENSITY]\n" +
" am to-uri [INTENT]\n" + " am to-uri [INTENT]\n" +
" am to-intent-uri [INTENT]\n" + " am to-intent-uri [INTENT]\n" +

View File

@@ -59,7 +59,7 @@ interface IWindowManager
in IInputContext inputContext); in IInputContext inputContext);
boolean inputMethodClientHasFocus(IInputMethodClient client); 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 clearForcedDisplaySize(int displayId);
void setForcedDisplayDensity(int displayId, int density); void setForcedDisplayDensity(int displayId, int density);
void clearForcedDisplayDensity(int displayId); void clearForcedDisplayDensity(int displayId);

View File

@@ -179,7 +179,6 @@ final class WifiDisplayController implements DumpUtils.Dump {
if (mWfdEnabling) { if (mWfdEnabling) {
mWfdEnabling = false; mWfdEnabling = false;
setWfdEnabled(true); setWfdEnabled(true);
discoverPeers();
} }
} }
@@ -493,14 +492,8 @@ final class WifiDisplayController implements DumpUtils.Dump {
return; // done 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 WifiDisplay display = createWifiDisplay(mConnectedDevice);
final int port = getPortNumber(mConnectedDevice);
final String iface = addr.getHostAddress() + ":" + port; final String iface = addr.getHostAddress() + ":" + port;
mPublishedDevice = mConnectedDevice; mPublishedDevice = mConnectedDevice;
@@ -517,9 +510,7 @@ final class WifiDisplayController implements DumpUtils.Dump {
if (mWifiP2pEnabled != enabled) { if (mWifiP2pEnabled != enabled) {
mWifiP2pEnabled = enabled; mWifiP2pEnabled = enabled;
if (enabled) { if (enabled) {
if (mWfdEnabled) { if (!mWfdEnabled) {
discoverPeers();
} else {
enableWfd(); enableWfd();
} }
} else { } else {
@@ -647,12 +638,24 @@ final class WifiDisplayController implements DumpUtils.Dump {
return null; 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) { private static boolean isWifiDisplay(WifiP2pDevice device) {
// FIXME: the wfdInfo API doesn't work yet return device.wfdInfo != null
return device.deviceName.startsWith("DWD-") && device.wfdInfo.isWfdEnabled()
|| device.deviceName.startsWith("DIRECT-") && isPrimarySinkDeviceType(device.wfdInfo.getDeviceType());
|| device.deviceName.startsWith("CAVM-"); }
//device.wfdInfo != null && device.wfdInfo.isWfdEnabled();
private static boolean isPrimarySinkDeviceType(int deviceType) {
return deviceType == WifiP2pWfdInfo.PRIMARY_SINK
|| deviceType == WifiP2pWfdInfo.SOURCE_OR_PRIMARY_SINK;
} }
private static String describeWifiP2pDevice(WifiP2pDevice device) { private static String describeWifiP2pDevice(WifiP2pDevice device) {

View File

@@ -7831,24 +7831,22 @@ public class WindowManagerService extends IWindowManager.Stub
} }
} }
public void setForcedDisplaySize(int displayId, int longDimen, int shortDimen) { public void setForcedDisplaySize(int displayId, int width, int height) {
synchronized(mWindowMap) { 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); final DisplayContent displayContent = getDisplayContent(displayId);
int width, height;
if (displayContent.mInitialDisplayWidth < displayContent.mInitialDisplayHeight) { width = Math.min(Math.max(width, MIN_WIDTH),
width = shortDimen < displayContent.mInitialDisplayWidth displayContent.mInitialDisplayWidth * MAX_SCALE);
? shortDimen : displayContent.mInitialDisplayWidth; height = Math.min(Math.max(height, MIN_HEIGHT),
height = longDimen < displayContent.mInitialDisplayHeight displayContent.mInitialDisplayHeight * MAX_SCALE);
? longDimen : displayContent.mInitialDisplayHeight;
} else {
width = longDimen < displayContent.mInitialDisplayWidth
? longDimen : displayContent.mInitialDisplayWidth;
height = shortDimen < displayContent.mInitialDisplayHeight
? shortDimen : displayContent.mInitialDisplayHeight;
}
setForcedDisplaySizeLocked(displayContent, width, height); setForcedDisplaySizeLocked(displayContent, width, height);
Settings.Secure.putString(mContext.getContentResolver(), Settings.Global.putString(mContext.getContentResolver(),
Settings.Secure.DISPLAY_SIZE_FORCED, width + "," + height); Settings.Global.DISPLAY_SIZE_FORCED, width + "," + height);
} }
} }
@@ -7895,8 +7893,8 @@ public class WindowManagerService extends IWindowManager.Stub
private void readForcedDisplaySizeAndDensityLocked(final DisplayContent displayContent) { private void readForcedDisplaySizeAndDensityLocked(final DisplayContent displayContent) {
boolean changed = false; boolean changed = false;
final String sizeStr = Settings.Secure.getString(mContext.getContentResolver(), final String sizeStr = Settings.Global.getString(mContext.getContentResolver(),
Settings.Secure.DISPLAY_SIZE_FORCED); Settings.Global.DISPLAY_SIZE_FORCED);
if (sizeStr != null && sizeStr.length() > 0) { if (sizeStr != null && sizeStr.length() > 0) {
final int pos = sizeStr.indexOf(','); final int pos = sizeStr.indexOf(',');
if (pos > 0 && sizeStr.lastIndexOf(',') == pos) { if (pos > 0 && sizeStr.lastIndexOf(',') == pos) {
@@ -7917,8 +7915,8 @@ public class WindowManagerService extends IWindowManager.Stub
} }
} }
} }
final String densityStr = Settings.Secure.getString(mContext.getContentResolver(), final String densityStr = Settings.Global.getString(mContext.getContentResolver(),
Settings.Secure.DISPLAY_DENSITY_FORCED); Settings.Global.DISPLAY_DENSITY_FORCED);
if (densityStr != null && densityStr.length() > 0) { if (densityStr != null && densityStr.length() > 0) {
int density; int density;
try { try {
@@ -7953,8 +7951,8 @@ public class WindowManagerService extends IWindowManager.Stub
final DisplayContent displayContent = getDisplayContent(displayId); final DisplayContent displayContent = getDisplayContent(displayId);
setForcedDisplaySizeLocked(displayContent, displayContent.mInitialDisplayWidth, setForcedDisplaySizeLocked(displayContent, displayContent.mInitialDisplayWidth,
displayContent.mInitialDisplayHeight); displayContent.mInitialDisplayHeight);
Settings.Secure.putString(mContext.getContentResolver(), Settings.Global.putString(mContext.getContentResolver(),
Settings.Secure.DISPLAY_SIZE_FORCED, ""); Settings.Global.DISPLAY_SIZE_FORCED, "");
} }
} }
@@ -7962,8 +7960,8 @@ public class WindowManagerService extends IWindowManager.Stub
synchronized(mWindowMap) { synchronized(mWindowMap) {
final DisplayContent displayContent = getDisplayContent(displayId); final DisplayContent displayContent = getDisplayContent(displayId);
setForcedDisplayDensityLocked(displayContent, density); setForcedDisplayDensityLocked(displayContent, density);
Settings.Secure.putString(mContext.getContentResolver(), Settings.Global.putString(mContext.getContentResolver(),
Settings.Secure.DISPLAY_DENSITY_FORCED, Integer.toString(density)); Settings.Global.DISPLAY_DENSITY_FORCED, Integer.toString(density));
} }
} }