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

Commit 0f94217e authored by Jinsuk Kim's avatar Jinsuk Kim Committed by Android (Google) Code Review
Browse files

Merge "Add API setProhibitMode in HdmiControlService"

parents 09b36e23 4d43d937
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ interface IHdmiControlService {
    void setControlEnabled(boolean enabled);
    void setArcMode(boolean enabled);
    void setOption(int option, int value);
    void setProhibitMode(boolean enabled);
    oneway void setSystemAudioVolume(int oldIndex, int newIndex, int maxIndex);
    oneway void setSystemAudioMute(boolean mute);
    void setInputChangeListener(IHdmiInputChangeListener listener);
+1 −1
Original line number Diff line number Diff line
@@ -72,7 +72,7 @@ final class ActiveSourceHandler {

        int currentActive = tv.getActiveSource();
        int currentPath = tv.getActivePath();
        if (!tv.isInPresetInstallationMode()) {
        if (!tv.isProhibitMode()) {
            tv.updateActiveSource(activeAddress, activePath);
            if (currentActive != activeAddress && currentPath != activePath) {
                tv.updateActivePortId(mService.pathToPortId(activePath));
+1 −23
Original line number Diff line number Diff line
@@ -53,12 +53,6 @@ abstract class HdmiCecLocalDevice {
    @GuardedBy("mLock")
    private int mActiveRoutingPath;

    // Set to true while the service is in normal mode. While set to false, no input change is
    // allowed. Used for situations where input change can confuse users such as channel auto-scan,
    // system upgrade, etc., a.k.a. "prohibit mode".
    @GuardedBy("mLock")
    private boolean mInputChangeEnabled;

    protected final HdmiCecMessageCache mCecMessageCache = new HdmiCecMessageCache();
    protected final Object mLock;

@@ -71,9 +65,6 @@ abstract class HdmiCecLocalDevice {
        mDeviceType = deviceType;
        mAddress = HdmiCec.ADDR_UNREGISTERED;
        mLock = service.getServiceLock();

        // TODO: Get control flag from persistent storage
        mInputChangeEnabled = true;
    }

    // Factory method that returns HdmiCecLocalDevice of corresponding type.
@@ -291,7 +282,7 @@ abstract class HdmiCecLocalDevice {
    protected boolean handleStandby(HdmiCecMessage message) {
        assertRunOnServiceThread();
        // Seq #12
        if (mService.isControlEnabled() && !isInPresetInstallationMode()
        if (mService.isControlEnabled() && !mService.isProhibitMode()
                && mService.isPowerOnOrTransient()) {
            mService.standby();
            return true;
@@ -546,19 +537,6 @@ abstract class HdmiCecLocalDevice {
        }
    }

    void setInputChangeEnabled(boolean enabled) {
        synchronized (mLock) {
            mInputChangeEnabled = enabled;
        }
    }

    boolean isInPresetInstallationMode() {
        // TODO: Change this to check the right flag.
        synchronized (mLock) {
            return !mInputChangeEnabled;
        }
    }

    @ServiceThreadOnly
    HdmiCecMessageCache getCecMessageCache() {
        assertRunOnServiceThread();
+5 −1
Original line number Diff line number Diff line
@@ -272,7 +272,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
        if (getActiveSource() != message.getSource()) {
            return true;
        }
        if (isInPresetInstallationMode()) {
        if (isProhibitMode()) {
            return true;
        }
        int portId = getPrevPortId();
@@ -1061,4 +1061,8 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
        }
        return false;
    }

    boolean isProhibitMode() {
        return mService.isProhibitMode();
    }
}
+30 −0
Original line number Diff line number Diff line
@@ -151,6 +151,12 @@ public final class HdmiControlService extends SystemService {
    @GuardedBy("mLock")
    private boolean mHdmiControlEnabled;

    // Set to true while the service is in normal mode. While set to false, no input change is
    // allowed. Used for situations where input change can confuse users such as channel auto-scan,
    // system upgrade, etc., a.k.a. "prohibit mode".
    @GuardedBy("mLock")
    private boolean mProhibitMode;

    // List of listeners registered by callers that want to get notified of
    // system audio mode changes.
    private final ArrayList<IHdmiSystemAudioModeChangeListener>
@@ -217,6 +223,8 @@ public final class HdmiControlService extends SystemService {
        // TODO: Read the preference for SystemAudioMode and initialize mSystemAudioMode and
        // start to monitor the preference value and invoke SystemAudioActionFromTv if needed.
        mHdmiControlEnabled = true;
        // TODO: Get control flag from persistent storage
        mProhibitMode = false;
    }

    @ServiceThreadOnly
@@ -875,6 +883,7 @@ public final class HdmiControlService extends SystemService {

        @Override
        public void setOption(final int key, final int value) {
            enforceAccessPermission();
            if (!isTvDevice()) {
                return;
            }
@@ -898,6 +907,15 @@ public final class HdmiControlService extends SystemService {
        private boolean isTvDevice() {
            return tv() != null;
        }

        @Override
        public void setProhibitMode(final boolean enabled) {
            enforceAccessPermission();
            if (!isTvDevice()) {
                return;
            }
            HdmiControlService.this.setProhibitMode(enabled);
        }
    }

    @ServiceThreadOnly
@@ -1176,4 +1194,16 @@ public final class HdmiControlService extends SystemService {
        mStandbyMessageReceived = false;
        mCecController.setOption(HdmiCec.OPTION_CEC_SERVICE_CONTROL, HdmiCec.DISABLED);
    }

    boolean isProhibitMode() {
        synchronized (mLock) {
            return mProhibitMode;
        }
    }

    void setProhibitMode(boolean enabled) {
        synchronized (mLock) {
            mProhibitMode = enabled;
        }
    }
}
Loading