diff options
author | Jinsuk Kim <jinsukkim@google.com> | 2015-04-21 21:12:29 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-04-21 21:12:31 +0000 |
commit | 34ea2cc278877da7c07cdb68a21be9d76122c158 (patch) | |
tree | ffa37f55bd8c6e3a9916089658ca74f942e976a3 /services | |
parent | fe7cca3d27a6a7c202ba5efa9695d6b575ca2a28 (diff) | |
parent | 7e4b480a0bf9f93a428f7c46bfea77ebfdb92d40 (diff) | |
download | frameworks_base-34ea2cc278877da7c07cdb68a21be9d76122c158.zip frameworks_base-34ea2cc278877da7c07cdb68a21be9d76122c158.tar.gz frameworks_base-34ea2cc278877da7c07cdb68a21be9d76122c158.tar.bz2 |
Merge "CEC: Prevent premature standby process completion"
Diffstat (limited to 'services')
-rw-r--r-- | services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java | 10 | ||||
-rw-r--r-- | services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java | 12 |
2 files changed, 14 insertions, 8 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java index b24bc65..8031c05 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java @@ -176,6 +176,7 @@ abstract class HdmiCecLocalDevice { void init() { assertRunOnServiceThread(); mPreferredAddress = getPreferredAddress(); + mPendingActionClearedCallback = null; } /** @@ -837,16 +838,16 @@ abstract class HdmiCecLocalDevice { * * @param initiatedByCec true if this sequence is initiated * by the reception the CEC messages like <Standby> - * @param origialCallback callback interface to get notified when all pending actions are + * @param originalCallback callback interface to get notified when all pending actions are * cleared */ protected void disableDevice(boolean initiatedByCec, - final PendingActionClearedCallback origialCallback) { + final PendingActionClearedCallback originalCallback) { mPendingActionClearedCallback = new PendingActionClearedCallback() { @Override public void onCleared(HdmiCecLocalDevice device) { mHandler.removeMessages(MSG_DISABLE_DEVICE_TIMEOUT); - origialCallback.onCleared(device); + originalCallback.onCleared(device); } }; mHandler.sendMessageDelayed(Message.obtain(mHandler, MSG_DISABLE_DEVICE_TIMEOUT), @@ -865,6 +866,9 @@ abstract class HdmiCecLocalDevice { action.finish(false); iter.remove(); } + if (mPendingActionClearedCallback != null) { + mPendingActionClearedCallback.onCleared(this); + } } /** diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java index 94f8dee..c4f410f 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java @@ -1109,11 +1109,13 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { @ServiceThreadOnly protected boolean handleTerminateArc(HdmiCecMessage message) { assertRunOnServiceThread(); - // In cast of termination, do not check ARC configuration in that AVR device - // might be removed already. - - // In case where <Terminate Arc> is started by <Request ARC Termination> - // need to clean up RequestArcInitiationAction. + if (mService .isPowerStandbyOrTransient()) { + setArcStatus(false); + return true; + } + // Do not check ARC configuration since the AVR might have been already removed. + // Clean up RequestArcTerminationAction in case <Terminate Arc> was started by + // <Request ARC Termination>. removeAction(RequestArcTerminationAction.class); SetArcTransmissionStateAction action = new SetArcTransmissionStateAction(this, message.getSource(), false); |