From bdfde2fdf0ec45a5662b16ff0f10196e03dcabbe Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Mon, 11 Jul 2022 11:23:08 +0200 Subject: [PATCH] Revert "spa: leave vendor.id and product.id in hex" This reverts commit 0d33760b716f47491ad59aee2df9bcfe103ef8ca. --- spa/plugins/alsa/alsa-udev.c | 20 ++++++++++++++++---- spa/plugins/v4l2/v4l2-udev.c | 21 +++++++++++++++++---- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/spa/plugins/alsa/alsa-udev.c b/spa/plugins/alsa/alsa-udev.c index 337949fa1..8501ff642 100644 --- a/spa/plugins/alsa/alsa-udev.c +++ b/spa/plugins/alsa/alsa-udev.c @@ -477,9 +477,15 @@ static int emit_object_info(struct impl *this, struct device *device) if ((str = udev_device_get_property_value(dev, "SUBSYSTEM")) && *str) { items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_SUBSYSTEM, str); } - if ((str = udev_device_get_property_value(dev, "ID_VENDOR_ID")) && *str) - items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_VENDOR_ID, str); + if ((str = udev_device_get_property_value(dev, "ID_VENDOR_ID")) && *str) { + char *dec = alloca(6); /* 65535 is max */ + int32_t val; + if (spa_atoi32(str, &val, 16)) { + snprintf(dec, 6, "%d", val); + items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_VENDOR_ID, dec); + } + } str = udev_device_get_property_value(dev, "ID_VENDOR_FROM_DATABASE"); if (!(str && *str)) { str = udev_device_get_property_value(dev, "ID_VENDOR_ENC"); @@ -494,9 +500,15 @@ static int emit_object_info(struct impl *this, struct device *device) if (str && *str) { items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_VENDOR_NAME, str); } - if ((str = udev_device_get_property_value(dev, "ID_MODEL_ID")) && *str) - items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_PRODUCT_ID, str); + if ((str = udev_device_get_property_value(dev, "ID_MODEL_ID")) && *str) { + char *dec = alloca(6); /* 65535 is max */ + int32_t val; + if (spa_atoi32(str, &val, 16)) { + snprintf(dec, 6, "%d", val); + items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_PRODUCT_ID, dec); + } + } str = udev_device_get_property_value(dev, "ID_MODEL_FROM_DATABASE"); if (!(str && *str)) { str = udev_device_get_property_value(dev, "ID_MODEL_ENC"); diff --git a/spa/plugins/v4l2/v4l2-udev.c b/spa/plugins/v4l2/v4l2-udev.c index 6a42709e3..ff5433e08 100644 --- a/spa/plugins/v4l2/v4l2-udev.c +++ b/spa/plugins/v4l2/v4l2-udev.c @@ -278,9 +278,15 @@ static int emit_object_info(struct impl *this, struct device *device) if ((str = udev_device_get_property_value(dev, "SUBSYSTEM")) && *str) { items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_SUBSYSTEM, str); } - if ((str = udev_device_get_property_value(dev, "ID_VENDOR_ID")) && *str) - items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_VENDOR_ID, str); + if ((str = udev_device_get_property_value(dev, "ID_VENDOR_ID")) && *str) { + char *dec = alloca(6); /* 65535 is max */ + int32_t val; + if (spa_atoi32(str, &val, 16)) { + snprintf(dec, 6, "%d", val); + items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_VENDOR_ID, dec); + } + } str = udev_device_get_property_value(dev, "ID_VENDOR_FROM_DATABASE"); if (!(str && *str)) { str = udev_device_get_property_value(dev, "ID_VENDOR_ENC"); @@ -295,8 +301,15 @@ static int emit_object_info(struct impl *this, struct device *device) if (str && *str) { items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_VENDOR_NAME, str); } - if ((str = udev_device_get_property_value(dev, "ID_MODEL_ID")) && *str) - items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_PRODUCT_ID, str); + if ((str = udev_device_get_property_value(dev, "ID_MODEL_ID")) && *str) { + char *dec = alloca(6); /* 65535 is max */ + int32_t val; + + if (spa_atoi32(str, &val, 16)) { + snprintf(dec, 6, "%d", val); + items[n_items++] = SPA_DICT_ITEM_INIT(SPA_KEY_DEVICE_PRODUCT_ID, dec); + } + } str = udev_device_get_property_value(dev, "ID_MODEL_FROM_DATABASE"); if (!(str && *str)) {