diff options
| author | 2019-05-10 18:32:50 -0700 | |
|---|---|---|
| committer | 2019-06-28 21:39:44 +0000 | |
| commit | 3af63c3e2f48e847150329e504af3b9a7eabb0ed (patch) | |
| tree | 38122f58a5d97ece6456eb4144174d66fa77d6ab | |
| parent | 49d0108eaf33e7f0925c823504e6ec144beaf7e4 (diff) | |
Send out OSD name when the device just gets its logical address
allocated
Test: manual
Bug: 129092034
Change-Id: Ifc69a3e545cf2a953933e00fc091739571e92b46
(cherry picked from commit ccbd518248b89bc22d48b25fe9f4add3778860ea)
| -rwxr-xr-x | services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java | 20 | ||||
| -rw-r--r-- | services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java | 4 |
2 files changed, 20 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java index 78b091e436ac..30ec2abe645c 100755 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java @@ -20,6 +20,7 @@ import android.annotation.Nullable; import android.hardware.hdmi.HdmiDeviceInfo; import android.hardware.hdmi.IHdmiControlCallback; import android.hardware.input.InputManager; +import android.hardware.tv.cec.V1_0.SendMessageResult; import android.os.Handler; import android.os.Looper; import android.os.Message; @@ -426,15 +427,26 @@ abstract class HdmiCecLocalDevice { assertRunOnServiceThread(); // Note that since this method is called after logical address allocation is done, // mDeviceInfo should not be null. + buildAndSendSetOsdName(message.getSource()); + return true; + } + + protected void buildAndSendSetOsdName(int dest) { HdmiCecMessage cecMessage = - HdmiCecMessageBuilder.buildSetOsdNameCommand( - mAddress, message.getSource(), mDeviceInfo.getDisplayName()); + HdmiCecMessageBuilder.buildSetOsdNameCommand( + mAddress, dest, mDeviceInfo.getDisplayName()); if (cecMessage != null) { - mService.sendCecCommand(cecMessage); + mService.sendCecCommand(cecMessage, new SendMessageCallback() { + @Override + public void onSendCompleted(int error) { + if (error != SendMessageResult.SUCCESS) { + HdmiLogger.debug("Failed to send cec command " + cecMessage); + } + } + }); } else { Slog.w(TAG, "Failed to build <Get Osd Name>:" + mDeviceInfo.getDisplayName()); } - return true; } // Audio System device with no Playback device type diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java index 560f7a03b20f..ec21b75891a5 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java @@ -87,6 +87,10 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource { mAddress, mService.getPhysicalAddress(), mDeviceType)); mService.sendCecCommand(HdmiCecMessageBuilder.buildDeviceVendorIdCommand( mAddress, mService.getVendorId())); + // Actively send out an OSD name to the TV to update the TV panel in case the TV + // does not query the OSD name on time. This is not a required behavior by the spec. + // It is used for some TVs that need the OSD name update but don't query it themselves. + buildAndSendSetOsdName(Constants.ADDR_TV); if (mService.audioSystem() == null) { // If current device is not a functional audio system device, // send message to potential audio system device in the system to get the system |