Merge "cec: resolve HdmiCecTvPowerToggleTest issue [1/1]"
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java
old mode 100755
new mode 100644
index fb2d2ee..84868f5
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java
@@ -1125,6 +1125,16 @@
removeActionExcept(clazz, null);
}
+ // Remove all running actions.
+ @ServiceThreadOnly
+ void removeAllActions() {
+ assertRunOnServiceThread();
+ for (HdmiCecFeatureAction action : mActions) {
+ action.finish(false);
+ }
+ mActions.clear();
+ }
+
// Remove all actions matched with the given Class type besides |exception|.
@ServiceThreadOnly
<T extends HdmiCecFeatureAction> void removeActionExcept(
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java
index 32ff5e22..a46dd04 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java
@@ -229,6 +229,14 @@
super.disableDevice(initiatedByCec, callback);
assertRunOnServiceThread();
mService.unregisterTvInputCallback(mTvInputCallback);
+ // Removing actions and invoking the callback is similar to
+ // HdmiCecLocalDevicePlayback#disableDevice and HdmiCecLocalDeviceTv#disableDevice,
+ // with the difference that in those classes only specific actions are removed and
+ // here we remove all actions. We don't expect any issues with removing all actions
+ // at this time, but we have to pay attention in the future.
+ removeAllActions();
+ // Call the callback instantly or else it will be called 5 seconds later.
+ checkIfPendingActionsCleared();
}
@Override