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

Commit 489454ff authored by Amy's avatar Amy Committed by shubang
Browse files

Migrate systemAudioActivated to HdmiControlService

Note that for all the devices that connected to the same HDMI system,
their System Audio Mode should be the same. So for devices that share
the same physical address, they should be able to share this status in
HdmiControlService. It's also easier for framework to set and get the
status.

Test: manul
Bug: 123369653
Change-Id: Id42995fb2c4687e71d98f431c2cc6a9ff9b53737
parent 7343460c
Loading
Loading
Loading
Loading
+5 −13
Original line number Original line Diff line number Diff line
@@ -68,11 +68,6 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource {


    private static final String TAG = "HdmiCecLocalDeviceAudioSystem";
    private static final String TAG = "HdmiCecLocalDeviceAudioSystem";


    // Whether System audio mode is activated or not.
    // This becomes true only when all system audio sequences are finished.
    @GuardedBy("mLock")
    private boolean mSystemAudioActivated;

    // Whether the System Audio Control feature is enabled or not. True by default.
    // Whether the System Audio Control feature is enabled or not. True by default.
    @GuardedBy("mLock")
    @GuardedBy("mLock")
    private boolean mSystemAudioControlFeatureEnabled;
    private boolean mSystemAudioControlFeatureEnabled;
@@ -271,7 +266,7 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource {
        synchronized (mLock) {
        synchronized (mLock) {
            mService.writeStringSystemProperty(
            mService.writeStringSystemProperty(
                    Constants.PROPERTY_LAST_SYSTEM_AUDIO_CONTROL,
                    Constants.PROPERTY_LAST_SYSTEM_AUDIO_CONTROL,
                    mSystemAudioActivated ? "true" : "false");
                    isSystemAudioActivated() ? "true" : "false");
        }
        }
        terminateSystemAudioMode();
        terminateSystemAudioMode();
    }
    }
@@ -814,7 +809,7 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource {
        }
        }
        HdmiLogger.debug(
        HdmiLogger.debug(
                "System Audio Mode change[old:%b new:%b]",
                "System Audio Mode change[old:%b new:%b]",
                mSystemAudioActivated, newSystemAudioMode);
                isSystemAudioActivated(), newSystemAudioMode);
        // Wake up device if System Audio Control is turned on
        // Wake up device if System Audio Control is turned on
        if (newSystemAudioMode) {
        if (newSystemAudioMode) {
            mService.wakeUp();
            mService.wakeUp();
@@ -854,8 +849,8 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource {
        }
        }
        updateAudioManagerForSystemAudio(newSystemAudioMode);
        updateAudioManagerForSystemAudio(newSystemAudioMode);
        synchronized (mLock) {
        synchronized (mLock) {
            if (mSystemAudioActivated != newSystemAudioMode) {
            if (isSystemAudioActivated() != newSystemAudioMode) {
                mSystemAudioActivated = newSystemAudioMode;
                mService.setSystemAudioActivated(newSystemAudioMode);
                mService.announceSystemAudioModeChange(newSystemAudioMode);
                mService.announceSystemAudioModeChange(newSystemAudioMode);
            }
            }
        }
        }
@@ -946,9 +941,7 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource {
    }
    }


    protected boolean isSystemAudioActivated() {
    protected boolean isSystemAudioActivated() {
        synchronized (mLock) {
        return mService.isSystemAudioActivated();
            return mSystemAudioActivated;
        }
    }
    }


    protected void terminateSystemAudioMode() {
    protected void terminateSystemAudioMode() {
@@ -1215,7 +1208,6 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource {
    protected void dump(IndentingPrintWriter pw) {
    protected void dump(IndentingPrintWriter pw) {
        pw.println("HdmiCecLocalDeviceAudioSystem:");
        pw.println("HdmiCecLocalDeviceAudioSystem:");
        pw.increaseIndent();
        pw.increaseIndent();
        pw.println("mSystemAudioActivated: " + mSystemAudioActivated);
        pw.println("isRoutingFeatureEnabled " + isRoutingControlFeatureEnabled());
        pw.println("isRoutingFeatureEnabled " + isRoutingControlFeatureEnabled());
        pw.println("mSystemAudioControlFeatureEnabled: " + mSystemAudioControlFeatureEnabled);
        pw.println("mSystemAudioControlFeatureEnabled: " + mSystemAudioControlFeatureEnabled);
        pw.println("mTvSystemAudioModeSupport: " + mTvSystemAudioModeSupport);
        pw.println("mTvSystemAudioModeSupport: " + mTvSystemAudioModeSupport);
+5 −12
Original line number Original line Diff line number Diff line
@@ -77,11 +77,6 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
    // True by default for all the ARC-enabled ports.
    // True by default for all the ARC-enabled ports.
    private final SparseBooleanArray mArcFeatureEnabled = new SparseBooleanArray();
    private final SparseBooleanArray mArcFeatureEnabled = new SparseBooleanArray();


    // Whether System audio mode is activated or not.
    // This becomes true only when all system audio sequences are finished.
    @GuardedBy("mLock")
    private boolean mSystemAudioActivated = false;

    // Whether the System Audio Control feature is enabled or not. True by default.
    // Whether the System Audio Control feature is enabled or not. True by default.
    @GuardedBy("mLock")
    @GuardedBy("mLock")
    private boolean mSystemAudioControlFeatureEnabled;
    private boolean mSystemAudioControlFeatureEnabled;
@@ -829,11 +824,12 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
                    + "because the System Audio Control feature is disabled.");
                    + "because the System Audio Control feature is disabled.");
            return;
            return;
        }
        }
        HdmiLogger.debug("System Audio Mode change[old:%b new:%b]", mSystemAudioActivated, on);
        HdmiLogger.debug("System Audio Mode change[old:%b new:%b]",
                mService.isSystemAudioActivated(), on);
        updateAudioManagerForSystemAudio(on);
        updateAudioManagerForSystemAudio(on);
        synchronized (mLock) {
        synchronized (mLock) {
            if (mSystemAudioActivated != on) {
            if (mService.isSystemAudioActivated() != on) {
                mSystemAudioActivated = on;
                mService.setSystemAudioActivated(on);
                mService.announceSystemAudioModeChange(on);
                mService.announceSystemAudioModeChange(on);
            }
            }
            startArcAction(on);
            startArcAction(on);
@@ -849,9 +845,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
        if (!hasSystemAudioDevice()) {
        if (!hasSystemAudioDevice()) {
            return false;
            return false;
        }
        }
        synchronized (mLock) {
        return mService.isSystemAudioActivated();
            return mSystemAudioActivated;
        }
    }
    }


    @ServiceThreadOnly
    @ServiceThreadOnly
@@ -1904,7 +1898,6 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
        super.dump(pw);
        super.dump(pw);
        pw.println("mArcEstablished: " + mArcEstablished);
        pw.println("mArcEstablished: " + mArcEstablished);
        pw.println("mArcFeatureEnabled: " + mArcFeatureEnabled);
        pw.println("mArcFeatureEnabled: " + mArcFeatureEnabled);
        pw.println("mSystemAudioActivated: " + mSystemAudioActivated);
        pw.println("mSystemAudioMute: " + mSystemAudioMute);
        pw.println("mSystemAudioMute: " + mSystemAudioMute);
        pw.println("mSystemAudioControlFeatureEnabled: " + mSystemAudioControlFeatureEnabled);
        pw.println("mSystemAudioControlFeatureEnabled: " + mSystemAudioControlFeatureEnabled);
        pw.println("mAutoDeviceOff: " + mAutoDeviceOff);
        pw.println("mAutoDeviceOff: " + mAutoDeviceOff);
+17 −0
Original line number Original line Diff line number Diff line
@@ -147,6 +147,10 @@ public class HdmiControlService extends SystemService {
    @GuardedBy("mLock")
    @GuardedBy("mLock")
    protected final ActiveSource mActiveSource = new ActiveSource();
    protected final ActiveSource mActiveSource = new ActiveSource();


    // Whether System Audio Mode is activated or not.
    @GuardedBy("mLock")
    private boolean mSystemAudioActivated = false;

    private static final boolean isHdmiCecNeverClaimPlaybackLogicAddr =
    private static final boolean isHdmiCecNeverClaimPlaybackLogicAddr =
            SystemProperties.getBoolean(
            SystemProperties.getBoolean(
                    Constants.PROPERTY_HDMI_CEC_NEVER_CLAIM_PLAYBACK_LOGICAL_ADDRESS, false);
                    Constants.PROPERTY_HDMI_CEC_NEVER_CLAIM_PLAYBACK_LOGICAL_ADDRESS, false);
@@ -2010,6 +2014,7 @@ public class HdmiControlService extends SystemService {
            pw.increaseIndent();
            pw.increaseIndent();
            pw.println("mHdmiControlEnabled: " + mHdmiControlEnabled);
            pw.println("mHdmiControlEnabled: " + mHdmiControlEnabled);
            pw.println("mMhlInputChangeEnabled: " + mMhlInputChangeEnabled);
            pw.println("mMhlInputChangeEnabled: " + mMhlInputChangeEnabled);
            pw.println("mSystemAudioActivated: " + isSystemAudioActivated());
            pw.decreaseIndent();
            pw.decreaseIndent();


            pw.println("mMhlController: ");
            pw.println("mMhlController: ");
@@ -2636,6 +2641,18 @@ public class HdmiControlService extends SystemService {
        }
        }
    }
    }


    boolean isSystemAudioActivated() {
        synchronized (mLock) {
            return mSystemAudioActivated;
        }
    }

    void setSystemAudioActivated(boolean on) {
        synchronized (mLock) {
            mSystemAudioActivated = on;
        }
    }

    @ServiceThreadOnly
    @ServiceThreadOnly
    void setCecOption(int key, boolean value) {
    void setCecOption(int key, boolean value) {
        assertRunOnServiceThread();
        assertRunOnServiceThread();