diff options
| -rwxr-xr-x[-rw-r--r--] | services/core/java/com/android/server/hdmi/DeviceDiscoveryAction.java | 23 | 
1 files changed, 19 insertions, 4 deletions
| diff --git a/services/core/java/com/android/server/hdmi/DeviceDiscoveryAction.java b/services/core/java/com/android/server/hdmi/DeviceDiscoveryAction.java index 97a6e850654b..db8dedbf12cc 100644..100755 --- a/services/core/java/com/android/server/hdmi/DeviceDiscoveryAction.java +++ b/services/core/java/com/android/server/hdmi/DeviceDiscoveryAction.java @@ -228,12 +228,20 @@ final class DeviceDiscoveryAction extends HdmiCecFeatureAction {                  if (cmd.getOpcode() == Constants.MESSAGE_SET_OSD_NAME) {                      handleSetOsdName(cmd);                      return true; +                } else if ((cmd.getOpcode() == Constants.MESSAGE_FEATURE_ABORT) && +                        ((cmd.getParams()[0] & 0xFF) == Constants.MESSAGE_GIVE_OSD_NAME)) { +                    handleSetOsdName(cmd); +                    return true;                  }                  return false;              case STATE_WAITING_FOR_VENDOR_ID:                  if (cmd.getOpcode() == Constants.MESSAGE_DEVICE_VENDOR_ID) {                      handleVendorId(cmd);                      return true; +                } else if ((cmd.getOpcode() == Constants.MESSAGE_FEATURE_ABORT) && +                        ((cmd.getParams()[0] & 0xFF) == Constants.MESSAGE_GIVE_DEVICE_VENDOR_ID)) { +                    handleVendorId(cmd); +                    return true;                  }                  return false;              case STATE_WAITING_FOR_DEVICE_POLLING: @@ -281,7 +289,11 @@ final class DeviceDiscoveryAction extends HdmiCecFeatureAction {          String displayName = null;          try { -            displayName = new String(cmd.getParams(), "US-ASCII"); +            if (cmd.getOpcode() == Constants.MESSAGE_FEATURE_ABORT) { +                displayName = HdmiUtils.getDefaultDeviceName(current.mLogicalAddress); +            } else { +                displayName = new String(cmd.getParams(), "US-ASCII"); +            }          } catch (UnsupportedEncodingException e) {              Slog.w(TAG, "Failed to decode display name: " + cmd.toString());              // If failed to get display name, use the default name of device. @@ -302,9 +314,12 @@ final class DeviceDiscoveryAction extends HdmiCecFeatureAction {              return;          } -        byte[] params = cmd.getParams(); -        int vendorId = HdmiUtils.threeBytesToInt(params); -        current.mVendorId = vendorId; +        if (cmd.getOpcode() != Constants.MESSAGE_FEATURE_ABORT) { +            byte[] params = cmd.getParams(); +            int vendorId = HdmiUtils.threeBytesToInt(params); +            current.mVendorId = vendorId; +        } +          increaseProcessedDeviceCount();          checkAndProceedStage();      } |