diff --git a/spa/plugins/bluez5/bluez5-dbus.c b/spa/plugins/bluez5/bluez5-dbus.c index 914ec1458..6b02c1263 100644 --- a/spa/plugins/bluez5/bluez5-dbus.c +++ b/spa/plugins/bluez5/bluez5-dbus.c @@ -1022,6 +1022,18 @@ static struct spa_bt_adapter *adapter_find(struct spa_bt_monitor *monitor, const return NULL; } +static struct spa_bt_adapter *adapter_find_bcast_source(struct spa_bt_monitor *monitor, const char *path) +{ + struct spa_bt_adapter *d; + char *found_string; + spa_list_for_each(d, &monitor->adapter_list, link) { + found_string = strstr(path, d->path); + if(found_string != NULL) + return d; + } + return NULL; +} + static int parse_modalias(const char *modalias, uint16_t *source, uint16_t *vendor, uint16_t *product, uint16_t *version) { @@ -2520,7 +2532,7 @@ static struct spa_bt_device *create_bcast_device(struct spa_bt_monitor *monitor, struct spa_bt_device *d; struct spa_bt_adapter *adapter; - adapter = adapter_find(monitor, object_path); + adapter = adapter_find_bcast_source(monitor, object_path); if (adapter == NULL) { spa_log_warn(monitor->log, "unknown adapter %s", object_path); return NULL; @@ -2537,7 +2549,7 @@ static struct spa_bt_device *create_bcast_device(struct spa_bt_monitor *monitor, d->adapter_path = strdup(adapter->path); d->alias = strdup(adapter->alias); d->name = strdup(adapter->name); - d->address = strdup("00:00:00:00:00:00"); + asprintf(&d->address, "00:00:00:00:00:00.%d", d->id); d->reconnect_state = BT_DEVICE_RECONNECT_STOP; device_update_hw_volume_profiles(d);