diff options
author | Jinsuk Kim <jinsukkim@google.com> | 2015-03-27 08:21:15 +0900 |
---|---|---|
committer | Jinsuk Kim <jinsukkim@google.com> | 2015-03-30 07:31:10 +0900 |
commit | 71651d37125a5fe7339fb5f140876c891a8275df (patch) | |
tree | 75dec6fb9dad4c7dd531ed825c15634747735528 /services/core/java/com/android/server/hdmi | |
parent | bf2673384cdea54eef2ca1c3e6ee35f5a3ce0e8a (diff) | |
download | frameworks_base-71651d37125a5fe7339fb5f140876c891a8275df.zip frameworks_base-71651d37125a5fe7339fb5f140876c891a8275df.tar.gz frameworks_base-71651d37125a5fe7339fb5f140876c891a8275df.tar.bz2 |
CEC: Do not send <ARC Terminated> when init request gets rejected
System audio may reject <Request ARC Initiation> with a response
<Feature Abort> or just time out. Do not send <Request ARC Terminated>
in response so as not to turn off the ARC mode, as it may not be
the intended behavior.
Bug: 19928094
Change-Id: I469dfa53bf35dfbca7daa86a69763b10551663ec
Diffstat (limited to 'services/core/java/com/android/server/hdmi')
3 files changed, 11 insertions, 8 deletions
diff --git a/services/core/java/com/android/server/hdmi/RequestArcAction.java b/services/core/java/com/android/server/hdmi/RequestArcAction.java index cbbf91b..75a79cb 100644 --- a/services/core/java/com/android/server/hdmi/RequestArcAction.java +++ b/services/core/java/com/android/server/hdmi/RequestArcAction.java @@ -58,14 +58,16 @@ abstract class RequestArcAction extends HdmiCecFeatureAction { // received without <Request ARC Initiation> or <Request ARC Termination>. case Constants.MESSAGE_FEATURE_ABORT: int originalOpcode = cmd.getParams()[0] & 0xFF; - if (originalOpcode == Constants.MESSAGE_REQUEST_ARC_INITIATION - || originalOpcode == Constants.MESSAGE_REQUEST_ARC_TERMINATION) { + if (originalOpcode == Constants.MESSAGE_REQUEST_ARC_TERMINATION) { disableArcTransmission(); finish(); return true; - } else { - return false; + } else if (originalOpcode == Constants.MESSAGE_REQUEST_ARC_INITIATION) { + tv().setArcStatus(false); + finish(); + return true; } + return false; } return false; } @@ -82,7 +84,7 @@ abstract class RequestArcAction extends HdmiCecFeatureAction { if (mState != state || state != STATE_WATING_FOR_REQUEST_ARC_REQUEST_RESPONSE) { return; } - HdmiLogger.debug("[T]RequestArcAction."); + HdmiLogger.debug("[T] RequestArcAction."); disableArcTransmission(); finish(); } diff --git a/services/core/java/com/android/server/hdmi/RequestArcInitiationAction.java b/services/core/java/com/android/server/hdmi/RequestArcInitiationAction.java index d9e1f24..f69f975 100644 --- a/services/core/java/com/android/server/hdmi/RequestArcInitiationAction.java +++ b/services/core/java/com/android/server/hdmi/RequestArcInitiationAction.java @@ -35,6 +35,7 @@ final class RequestArcInitiationAction extends RequestArcAction { @Override boolean start() { + // Seq #38 mState = STATE_WATING_FOR_REQUEST_ARC_REQUEST_RESPONSE; addTimer(mState, HdmiConfig.TIMEOUT_MS); @@ -44,9 +45,8 @@ final class RequestArcInitiationAction extends RequestArcAction { @Override public void onSendCompleted(int error) { if (error != Constants.SEND_RESULT_SUCCESS) { - // If failed to send <Request ARC Initiation>, start "Disabled" - // ARC transmission action. - disableArcTransmission(); + // Turn off ARC status if <Request ARC Initiation> fails. + tv().setArcStatus(false); finish(); } } diff --git a/services/core/java/com/android/server/hdmi/SetArcTransmissionStateAction.java b/services/core/java/com/android/server/hdmi/SetArcTransmissionStateAction.java index bffa854..d200d35 100644 --- a/services/core/java/com/android/server/hdmi/SetArcTransmissionStateAction.java +++ b/services/core/java/com/android/server/hdmi/SetArcTransmissionStateAction.java @@ -52,6 +52,7 @@ final class SetArcTransmissionStateAction extends HdmiCecFeatureAction { @Override boolean start() { + // Seq #37. if (mEnabled) { // Enable ARC status immediately after sending <Report Arc Initiated>. // If AVR responds with <Feature Abort>, disable ARC status again. |