Loading services/core/java/com/android/server/hdmi/Constants.java +4 −0 Original line number Diff line number Diff line Loading @@ -214,6 +214,10 @@ final class Constants { // values which denotes the device type in HDMI Spec 1.4. static final String PROPERTY_DEVICE_TYPE = "ro.hdmi.device_type"; // Set to false to allow playback device to go to suspend mode even // when it's an active source. True by default. static final String PROPERTY_KEEP_AWAKE = "persist.sys.hdmi.keep_awake"; static final int RECORDING_TYPE_DIGITAL_RF = 1; static final int RECORDING_TYPE_ANALOGUE_RF = 2; static final int RECORDING_TYPE_EXTERNAL_PHYSICAL_ADDRESS = 3; Loading services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java +52 −7 Original line number Diff line number Diff line Loading @@ -38,9 +38,11 @@ final class HdmiCecLocalDevicePlayback extends HdmiCecLocalDevice { // Used to keep the device awake while it is the active source. For devices that // cannot wake up via CEC commands, this address the inconvenience of having to // turn them on. // turn them on. True by default, and can be disabled (i.e. device can go to sleep // in active device status) by explicitly setting the system property // persist.sys.hdmi.keep_awake to false. // Lazily initialized - should call getWakeLock() to get the instance. private WakeLock mWakeLock; private ActiveWakeLock mWakeLock; HdmiCecLocalDevicePlayback(HdmiControlService service) { super(service, HdmiDeviceInfo.DEVICE_PLAYBACK); Loading Loading @@ -142,19 +144,30 @@ final class HdmiCecLocalDevicePlayback extends HdmiCecLocalDevice { mIsActiveSource = on; if (on) { getWakeLock().acquire(); HdmiLogger.debug("active source: %b. Wake lock acquired", mIsActiveSource); } else { getWakeLock().release(); HdmiLogger.debug("Wake lock released"); } } @ServiceThreadOnly private WakeLock getWakeLock() { private ActiveWakeLock getWakeLock() { assertRunOnServiceThread(); if (mWakeLock == null) { mWakeLock = mService.getPowerManager().newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG); mWakeLock.setReferenceCounted(false); if (SystemProperties.getBoolean(Constants.PROPERTY_KEEP_AWAKE, true)) { mWakeLock = new SystemWakeLock(); } else { // Create a dummy lock object that doesn't do anything about wake lock, // hence allows the device to go to sleep even if it's the active source. mWakeLock = new ActiveWakeLock() { @Override public void acquire() { } @Override public void release() { } @Override public boolean isHeld() { return false; } }; HdmiLogger.debug("No wakelock is used to keep the display on."); } } return mWakeLock; } Loading Loading @@ -258,4 +271,36 @@ final class HdmiCecLocalDevicePlayback extends HdmiCecLocalDevice { super.dump(pw); pw.println("mIsActiveSource: " + mIsActiveSource); } // Wrapper interface over PowerManager.WakeLock private interface ActiveWakeLock { void acquire(); void release(); boolean isHeld(); } private class SystemWakeLock implements ActiveWakeLock { private final WakeLock mWakeLock; public SystemWakeLock() { mWakeLock = mService.getPowerManager().newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG); mWakeLock.setReferenceCounted(false); } @Override public void acquire() { mWakeLock.acquire(); HdmiLogger.debug("active source: %b. Wake lock acquired", mIsActiveSource); } @Override public void release() { mWakeLock.release(); HdmiLogger.debug("Wake lock released"); } @Override public boolean isHeld() { return mWakeLock.isHeld(); } } } Loading
services/core/java/com/android/server/hdmi/Constants.java +4 −0 Original line number Diff line number Diff line Loading @@ -214,6 +214,10 @@ final class Constants { // values which denotes the device type in HDMI Spec 1.4. static final String PROPERTY_DEVICE_TYPE = "ro.hdmi.device_type"; // Set to false to allow playback device to go to suspend mode even // when it's an active source. True by default. static final String PROPERTY_KEEP_AWAKE = "persist.sys.hdmi.keep_awake"; static final int RECORDING_TYPE_DIGITAL_RF = 1; static final int RECORDING_TYPE_ANALOGUE_RF = 2; static final int RECORDING_TYPE_EXTERNAL_PHYSICAL_ADDRESS = 3; Loading
services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java +52 −7 Original line number Diff line number Diff line Loading @@ -38,9 +38,11 @@ final class HdmiCecLocalDevicePlayback extends HdmiCecLocalDevice { // Used to keep the device awake while it is the active source. For devices that // cannot wake up via CEC commands, this address the inconvenience of having to // turn them on. // turn them on. True by default, and can be disabled (i.e. device can go to sleep // in active device status) by explicitly setting the system property // persist.sys.hdmi.keep_awake to false. // Lazily initialized - should call getWakeLock() to get the instance. private WakeLock mWakeLock; private ActiveWakeLock mWakeLock; HdmiCecLocalDevicePlayback(HdmiControlService service) { super(service, HdmiDeviceInfo.DEVICE_PLAYBACK); Loading Loading @@ -142,19 +144,30 @@ final class HdmiCecLocalDevicePlayback extends HdmiCecLocalDevice { mIsActiveSource = on; if (on) { getWakeLock().acquire(); HdmiLogger.debug("active source: %b. Wake lock acquired", mIsActiveSource); } else { getWakeLock().release(); HdmiLogger.debug("Wake lock released"); } } @ServiceThreadOnly private WakeLock getWakeLock() { private ActiveWakeLock getWakeLock() { assertRunOnServiceThread(); if (mWakeLock == null) { mWakeLock = mService.getPowerManager().newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG); mWakeLock.setReferenceCounted(false); if (SystemProperties.getBoolean(Constants.PROPERTY_KEEP_AWAKE, true)) { mWakeLock = new SystemWakeLock(); } else { // Create a dummy lock object that doesn't do anything about wake lock, // hence allows the device to go to sleep even if it's the active source. mWakeLock = new ActiveWakeLock() { @Override public void acquire() { } @Override public void release() { } @Override public boolean isHeld() { return false; } }; HdmiLogger.debug("No wakelock is used to keep the display on."); } } return mWakeLock; } Loading Loading @@ -258,4 +271,36 @@ final class HdmiCecLocalDevicePlayback extends HdmiCecLocalDevice { super.dump(pw); pw.println("mIsActiveSource: " + mIsActiveSource); } // Wrapper interface over PowerManager.WakeLock private interface ActiveWakeLock { void acquire(); void release(); boolean isHeld(); } private class SystemWakeLock implements ActiveWakeLock { private final WakeLock mWakeLock; public SystemWakeLock() { mWakeLock = mService.getPowerManager().newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG); mWakeLock.setReferenceCounted(false); } @Override public void acquire() { mWakeLock.acquire(); HdmiLogger.debug("active source: %b. Wake lock acquired", mIsActiveSource); } @Override public void release() { mWakeLock.release(); HdmiLogger.debug("Wake lock released"); } @Override public boolean isHeld() { return mWakeLock.isHeld(); } } }