summaryrefslogtreecommitdiffstats
path: root/services/core/java/com/android/server/hdmi
diff options
context:
space:
mode:
authorJinsuk Kim <jinsukkim@google.com>2015-03-27 08:21:15 +0900
committerJinsuk Kim <jinsukkim@google.com>2015-03-30 07:31:10 +0900
commit71651d37125a5fe7339fb5f140876c891a8275df (patch)
tree75dec6fb9dad4c7dd531ed825c15634747735528 /services/core/java/com/android/server/hdmi
parentbf2673384cdea54eef2ca1c3e6ee35f5a3ce0e8a (diff)
downloadframeworks_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')
-rw-r--r--services/core/java/com/android/server/hdmi/RequestArcAction.java12
-rw-r--r--services/core/java/com/android/server/hdmi/RequestArcInitiationAction.java6
-rw-r--r--services/core/java/com/android/server/hdmi/SetArcTransmissionStateAction.java1
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.