Merge "CEC: Avoid setting op in disabled mode" into lmp-mr1-dev

This commit is contained in:
Jinsuk Kim
2014-12-06 10:19:54 +00:00
committed by Android (Google) Code Review

View File

@@ -379,7 +379,7 @@ public final class HdmiControlService extends SystemService {
} }
mWakeUpMessageReceived = false; mWakeUpMessageReceived = false;
if (isTvDevice()) { if (isTvDeviceEnabled()) {
mCecController.setOption(OPTION_CEC_AUTO_WAKEUP, toInt(tv().getAutoWakeup())); mCecController.setOption(OPTION_CEC_AUTO_WAKEUP, toInt(tv().getAutoWakeup()));
} }
int reason = -1; int reason = -1;
@@ -430,11 +430,15 @@ public final class HdmiControlService extends SystemService {
setControlEnabled(enabled); setControlEnabled(enabled);
break; break;
case Global.HDMI_CONTROL_AUTO_WAKEUP_ENABLED: case Global.HDMI_CONTROL_AUTO_WAKEUP_ENABLED:
if (isTvDeviceEnabled()) {
tv().setAutoWakeup(enabled); tv().setAutoWakeup(enabled);
}
setCecOption(OPTION_CEC_AUTO_WAKEUP, toInt(enabled)); setCecOption(OPTION_CEC_AUTO_WAKEUP, toInt(enabled));
break; break;
case Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED: case Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED:
if (isTvDeviceEnabled()) {
tv().setAutoDeviceOff(enabled); tv().setAutoDeviceOff(enabled);
}
// No need to propagate to HAL. // No need to propagate to HAL.
break; break;
case Global.MHL_INPUT_SWITCHING_ENABLED: case Global.MHL_INPUT_SWITCHING_ENABLED:
@@ -665,11 +669,7 @@ public final class HdmiControlService extends SystemService {
@ServiceThreadOnly @ServiceThreadOnly
HdmiDeviceInfo getDeviceInfo(int logicalAddress) { HdmiDeviceInfo getDeviceInfo(int logicalAddress) {
assertRunOnServiceThread(); assertRunOnServiceThread();
HdmiCecLocalDeviceTv tv = tv(); return tv() == null ? null : tv().getCecDeviceInfo(logicalAddress);
if (tv == null) {
return null;
}
return tv.getCecDeviceInfo(logicalAddress);
} }
/** /**
@@ -1431,8 +1431,8 @@ public final class HdmiControlService extends SystemService {
runOnServiceThread(new Runnable() { runOnServiceThread(new Runnable() {
@Override @Override
public void run() { public void run() {
if (!isTvDevice()) { if (!isTvDeviceEnabled()) {
Slog.w(TAG, "No TV is available."); Slog.w(TAG, "TV device is not enabled.");
return; return;
} }
tv().startOneTouchRecord(recorderAddress, recordSource); tv().startOneTouchRecord(recorderAddress, recordSource);
@@ -1446,8 +1446,8 @@ public final class HdmiControlService extends SystemService {
runOnServiceThread(new Runnable() { runOnServiceThread(new Runnable() {
@Override @Override
public void run() { public void run() {
if (!isTvDevice()) { if (!isTvDeviceEnabled()) {
Slog.w(TAG, "No TV is available."); Slog.w(TAG, "TV device is not enabled.");
return; return;
} }
tv().stopOneTouchRecord(recorderAddress); tv().stopOneTouchRecord(recorderAddress);
@@ -1462,8 +1462,8 @@ public final class HdmiControlService extends SystemService {
runOnServiceThread(new Runnable() { runOnServiceThread(new Runnable() {
@Override @Override
public void run() { public void run() {
if (!isTvDevice()) { if (!isTvDeviceEnabled()) {
Slog.w(TAG, "No TV is available."); Slog.w(TAG, "TV device is not enabled.");
return; return;
} }
tv().startTimerRecording(recorderAddress, sourceType, recordSource); tv().startTimerRecording(recorderAddress, sourceType, recordSource);
@@ -1478,8 +1478,8 @@ public final class HdmiControlService extends SystemService {
runOnServiceThread(new Runnable() { runOnServiceThread(new Runnable() {
@Override @Override
public void run() { public void run() {
if (!isTvDevice()) { if (!isTvDeviceEnabled()) {
Slog.w(TAG, "No TV is available."); Slog.w(TAG, "TV device is not enabled.");
return; return;
} }
tv().clearTimerRecording(recorderAddress, sourceType, recordSource); tv().clearTimerRecording(recorderAddress, sourceType, recordSource);
@@ -1800,6 +1800,10 @@ public final class HdmiControlService extends SystemService {
return mLocalDevices.contains(HdmiDeviceInfo.DEVICE_TV); return mLocalDevices.contains(HdmiDeviceInfo.DEVICE_TV);
} }
boolean isTvDeviceEnabled() {
return isTvDevice() && tv() != null;
}
private HdmiCecLocalDevicePlayback playback() { private HdmiCecLocalDevicePlayback playback() {
return (HdmiCecLocalDevicePlayback) return (HdmiCecLocalDevicePlayback)
mCecController.getLocalDevice(HdmiDeviceInfo.DEVICE_PLAYBACK); mCecController.getLocalDevice(HdmiDeviceInfo.DEVICE_PLAYBACK);
@@ -1907,7 +1911,7 @@ public final class HdmiControlService extends SystemService {
assertRunOnServiceThread(); assertRunOnServiceThread();
mLanguage = language; mLanguage = language;
if (isTvDevice()) { if (isTvDeviceEnabled()) {
tv().broadcastMenuLanguage(language); tv().broadcastMenuLanguage(language);
} }
} }
@@ -2131,6 +2135,7 @@ public final class HdmiControlService extends SystemService {
@ServiceThreadOnly @ServiceThreadOnly
void changeInputForMhl(int portId, boolean contentOn) { void changeInputForMhl(int portId, boolean contentOn) {
assertRunOnServiceThread(); assertRunOnServiceThread();
if (tv() == null) return;
final int lastInput = contentOn ? tv().getActivePortId() : Constants.INVALID_PORT_ID; final int lastInput = contentOn ? tv().getActivePortId() : Constants.INVALID_PORT_ID;
tv().doManualPortSwitching(portId, new IHdmiControlCallback.Stub() { tv().doManualPortSwitching(portId, new IHdmiControlCallback.Stub() {
@Override @Override