From 350e68d0b80c22e6ec37dd683134f46079619803 Mon Sep 17 00:00:00 2001 From: Jungshik Jang Date: Tue, 19 Aug 2014 18:56:21 +0900 Subject: [PATCH] Clean up MHL local devices when HdmiControlService turns into disabled state Bug: 17122583 Change-Id: Id8f17faf9891952c762f86b46a89732f1497c5fc --- .../server/hdmi/HdmiControlService.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java index 32d97bad493bf..667ec07a28610 100644 --- a/services/core/java/com/android/server/hdmi/HdmiControlService.java +++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java @@ -356,7 +356,7 @@ public final class HdmiControlService extends SystemService { break; case Global.HDMI_CONTROL_AUTO_WAKEUP_ENABLED: tv().setAutoWakeup(enabled); - setOption(OPTION_CEC_AUTO_WAKEUP, toInt(enabled)); + setCecOption(OPTION_CEC_AUTO_WAKEUP, toInt(enabled)); break; case Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED: tv().setAutoDeviceOff(enabled); @@ -1683,11 +1683,17 @@ public final class HdmiControlService extends SystemService { } private void disableDevices(PendingActionClearedCallback callback) { - for (HdmiCecLocalDevice device : mCecController.getLocalDeviceList()) { - device.disableDevice(mStandbyMessageReceived, callback); + if (mCecController != null) { + for (HdmiCecLocalDevice device : mCecController.getLocalDeviceList()) { + device.disableDevice(mStandbyMessageReceived, callback); + } + if (isTvDevice()) { + unregisterSettingsObserver(); + } } - if (isTvDevice()) { - unregisterSettingsObserver(); + + if (mMhlController != null) { + mMhlController.clearAllLocalDevices(); } } @@ -1759,7 +1765,7 @@ public final class HdmiControlService extends SystemService { } @ServiceThreadOnly - void setOption(int key, int value) { + void setCecOption(int key, int value) { assertRunOnServiceThread(); mCecController.setOption(key, value); }