OSDN Git Service

CEC: Explicitly turn on screen for remote control passthrough
authorJinsuk Kim <jinsukkim@google.com>
Tue, 24 Mar 2015 07:55:01 +0000 (16:55 +0900)
committerThe Android Automerger <android-build@google.com>
Fri, 27 Mar 2015 22:02:03 +0000 (15:02 -0700)
Ensures that the playback device turns on display output signal
upon receiving CEC command <User Control Pressed>.

Bug: 19518981
Change-Id: I4f898380c9ffc071da2357a51e61309ae5d233f5
(cherry picked from commit 9b8507c52ae845c8eed9fd9952bf66538934b8fd)

services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java

index a8f6954..8034809 100644 (file)
@@ -179,6 +179,13 @@ final class HdmiCecLocalDevicePlayback extends HdmiCecLocalDevice {
         }
     }
 
+    @ServiceThreadOnly
+    protected boolean handleUserControlPressed(HdmiCecMessage message) {
+        assertRunOnServiceThread();
+        wakeUpIfActiveSource();
+        return super.handleUserControlPressed(message);
+    }
+
     @Override
     @ServiceThreadOnly
     protected boolean handleSetStreamPath(HdmiCecMessage message) {
@@ -216,7 +223,12 @@ final class HdmiCecLocalDevicePlayback extends HdmiCecLocalDevice {
     }
 
     private void wakeUpIfActiveSource() {
-        if (mIsActiveSource && mService.isPowerStandbyOrTransient()) {
+        if (!mIsActiveSource) {
+            return;
+        }
+        // Wake up the device if the power is in standby mode, or its screen is off -
+        // which can happen if the device is holding a partial lock.
+        if (mService.isPowerStandbyOrTransient() || !mService.getPowerManager().isScreenOn()) {
             mService.wakeUp();
         }
     }