Loading core/java/android/hardware/hdmi/IHdmiControlService.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -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); Loading services/core/java/com/android/server/hdmi/ActiveSourceHandler.java +1 −1 Original line number Diff line number Diff line Loading @@ -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)); Loading services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java +1 −23 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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. Loading Loading @@ -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; Loading Loading @@ -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(); Loading services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +5 −1 Original line number Diff line number Diff line Loading @@ -272,7 +272,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { if (getActiveSource() != message.getSource()) { return true; } if (isInPresetInstallationMode()) { if (isProhibitMode()) { return true; } int portId = getPrevPortId(); Loading Loading @@ -1061,4 +1061,8 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { } return false; } boolean isProhibitMode() { return mService.isProhibitMode(); } } services/core/java/com/android/server/hdmi/HdmiControlService.java +30 −0 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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 Loading Loading @@ -875,6 +883,7 @@ public final class HdmiControlService extends SystemService { @Override public void setOption(final int key, final int value) { enforceAccessPermission(); if (!isTvDevice()) { return; } Loading @@ -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 Loading Loading @@ -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
core/java/android/hardware/hdmi/IHdmiControlService.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -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); Loading
services/core/java/com/android/server/hdmi/ActiveSourceHandler.java +1 −1 Original line number Diff line number Diff line Loading @@ -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)); Loading
services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java +1 −23 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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. Loading Loading @@ -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; Loading Loading @@ -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(); Loading
services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +5 −1 Original line number Diff line number Diff line Loading @@ -272,7 +272,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { if (getActiveSource() != message.getSource()) { return true; } if (isInPresetInstallationMode()) { if (isProhibitMode()) { return true; } int portId = getPrevPortId(); Loading Loading @@ -1061,4 +1061,8 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { } return false; } boolean isProhibitMode() { return mService.isProhibitMode(); } }
services/core/java/com/android/server/hdmi/HdmiControlService.java +30 −0 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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 Loading Loading @@ -875,6 +883,7 @@ public final class HdmiControlService extends SystemService { @Override public void setOption(final int key, final int value) { enforceAccessPermission(); if (!isTvDevice()) { return; } Loading @@ -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 Loading Loading @@ -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; } } }