Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d05f67f9 authored by Yuncheol Heo's avatar Yuncheol Heo
Browse files

Handle <Feature Abort> after <System Audio Mode Request>.

- Fix some wrong return values.

Bug: 15841647
Change-Id: Ia4596e87204196b48429d55da4945f84de51a07b
parent 04dc9953
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -540,7 +540,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
        assertRunOnServiceThread();
        HdmiCecDeviceInfo avr = getAvrDeviceInfo();
        if (avr == null) {
            invokeCallback(callback, HdmiControlManager.RESULT_SOURCE_NOT_AVAILABLE);
            invokeCallback(callback, HdmiControlManager.RESULT_TARGET_NOT_AVAILABLE);
            return;
        }

+7 −2
Original line number Diff line number Diff line
@@ -78,7 +78,7 @@ abstract class SystemAudioAction extends FeatureAction {
                    addTimer(mState, mTargetAudioStatus ? ON_TIMEOUT_MS : OFF_TIMEOUT_MS);
                } else {
                    setSystemAudioMode(false);
                    finishWithCallback(HdmiControlManager.RESULT_EXCEPTION);
                    finishWithCallback(HdmiControlManager.RESULT_COMMUNICATION_FAILED);
                }
            }
        });
@@ -102,7 +102,12 @@ abstract class SystemAudioAction extends FeatureAction {
    final boolean processCommand(HdmiCecMessage cmd) {
        switch (mState) {
            case STATE_WAIT_FOR_SET_SYSTEM_AUDIO_MODE:
                // TODO: Handle <FeatureAbort> of <SystemAudioModeRequest>
                if (cmd.getOpcode() == Constants.MESSAGE_FEATURE_ABORT
                        && cmd.getParams()[0] == Constants.MESSAGE_SYSTEM_AUDIO_MODE_REQUEST) {
                    setSystemAudioMode(false);
                    finishWithCallback(HdmiControlManager.RESULT_EXCEPTION);
                    return true;
                }
                if (cmd.getOpcode() != Constants.MESSAGE_SET_SYSTEM_AUDIO_MODE
                        || !HdmiUtils.checkCommandSource(cmd, mAvrLogicalAddress, TAG)) {
                    return false;