Merge "CEC: Do not issue non-effective <Routing Change>" into lmp-mr1-dev

This commit is contained in:
Jinsuk Kim
2014-11-24 21:13:58 +00:00
committed by Android (Google) Code Review
2 changed files with 17 additions and 20 deletions

View File

@@ -89,11 +89,8 @@ final class ActiveSourceHandler {
tv.updateActiveSource(current);
invokeCallback(HdmiControlManager.RESULT_SUCCESS);
} else {
HdmiCecMessage routingChange = HdmiCecMessageBuilder.buildRoutingChange(
getSourceAddress(), newActive.physicalAddress, current.physicalAddress);
mService.sendCecCommand(routingChange);
tv.addAndStartAction(
new RoutingControlAction(tv, current.physicalAddress, true, mCallback));
tv.startRoutingControl(newActive.physicalAddress, current.physicalAddress, true,
mCallback);
}
}
}

View File

@@ -362,11 +362,22 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
return;
}
int newPath = mService.portIdToPath(portId);
startRoutingControl(oldPath, newPath, true, callback);
}
@ServiceThreadOnly
void startRoutingControl(int oldPath, int newPath, boolean queryDevicePowerStatus,
IHdmiControlCallback callback) {
assertRunOnServiceThread();
if (oldPath == newPath) {
return;
}
HdmiCecMessage routingChange =
HdmiCecMessageBuilder.buildRoutingChange(mAddress, oldPath, newPath);
mService.sendCecCommand(routingChange);
removeAction(RoutingControlAction.class);
addAndStartAction(new RoutingControlAction(this, newPath, true, callback));
addAndStartAction(
new RoutingControlAction(this, newPath, queryDevicePowerStatus, callback));
}
@ServiceThreadOnly
@@ -587,12 +598,9 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
private boolean handleNewDeviceAtTheTailOfActivePath(int path) {
// Seq #22
if (isTailOfActivePath(path, getActivePath())) {
removeAction(RoutingControlAction.class);
int newPath = mService.portIdToPath(getActivePortId());
setActivePath(newPath);
mService.sendCecCommand(HdmiCecMessageBuilder.buildRoutingChange(
mAddress, getActivePath(), newPath));
addAndStartAction(new RoutingControlAction(this, newPath, false, null));
startRoutingControl(getActivePath(), newPath, false, null);
return true;
}
return false;
@@ -1346,12 +1354,8 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
assertRunOnServiceThread();
// Seq #23
if (isTailOfActivePath(path, getActivePath())) {
removeAction(RoutingControlAction.class);
int newPath = mService.portIdToPath(getActivePortId());
mService.sendCecCommand(HdmiCecMessageBuilder.buildRoutingChange(
mAddress, getActivePath(), newPath));
mActiveSource.invalidate();
addAndStartAction(new RoutingControlAction(this, getActivePath(), true, null));
startRoutingControl(getActivePath(), newPath, true, null);
}
}
@@ -1367,13 +1371,9 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
// Seq #24
if (getActivePortId() != Constants.INVALID_PORT_ID) {
if (!routingForBootup && !isProhibitMode()) {
removeAction(RoutingControlAction.class);
int newPath = mService.portIdToPath(getActivePortId());
setActivePath(newPath);
mService.sendCecCommand(HdmiCecMessageBuilder.buildRoutingChange(mAddress,
getActivePath(), newPath));
addAndStartAction(new RoutingControlAction(this, getActivePortId(),
routingForBootup, null));
startRoutingControl(getActivePath(), newPath, routingForBootup, null);
}
} else {
int activePath = mService.getPhysicalAddress();