mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-03 09:01:54 -05:00
parent
184bdbeb4c
commit
1642e5220f
3 changed files with 40 additions and 7 deletions
|
|
@ -488,7 +488,7 @@ static int update_device_props(struct device *device)
|
||||||
{
|
{
|
||||||
struct pw_properties *p = device->props;
|
struct pw_properties *p = device->props;
|
||||||
const char *s, *d;
|
const char *s, *d;
|
||||||
char temp[32];
|
char temp[32], tmp[1024];
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
s = pw_properties_get(p, SPA_KEY_DEVICE_NAME);
|
s = pw_properties_get(p, SPA_KEY_DEVICE_NAME);
|
||||||
|
|
@ -500,7 +500,9 @@ static int update_device_props(struct device *device)
|
||||||
snprintf(temp, sizeof(temp), "%d", device->id);
|
snprintf(temp, sizeof(temp), "%d", device->id);
|
||||||
s = temp;
|
s = temp;
|
||||||
}
|
}
|
||||||
pw_properties_setf(p, PW_KEY_DEVICE_NAME, "alsa_card.%s", s);
|
pw_properties_set(p, PW_KEY_DEVICE_NAME,
|
||||||
|
sm_media_session_sanitize_name(tmp, sizeof(tmp),
|
||||||
|
'_', "alsa_card.%s", s));
|
||||||
|
|
||||||
for (i = 2; i <= 99; i++) {
|
for (i = 2; i <= 99; i++) {
|
||||||
if ((d = pw_properties_get(p, PW_KEY_DEVICE_NAME)) == NULL)
|
if ((d = pw_properties_get(p, PW_KEY_DEVICE_NAME)) == NULL)
|
||||||
|
|
@ -509,7 +511,9 @@ static int update_device_props(struct device *device)
|
||||||
if (alsa_find_device(device->impl, SPA_ID_INVALID, d) == NULL)
|
if (alsa_find_device(device->impl, SPA_ID_INVALID, d) == NULL)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
pw_properties_setf(p, PW_KEY_DEVICE_NAME, "alsa_card.%s.%d", s, i);
|
pw_properties_set(p, PW_KEY_DEVICE_NAME,
|
||||||
|
sm_media_session_sanitize_name(tmp, sizeof(tmp),
|
||||||
|
'_', "alsa_card.%s.%d", s, i));
|
||||||
}
|
}
|
||||||
if (i == 99)
|
if (i == 99)
|
||||||
return -EEXIST;
|
return -EEXIST;
|
||||||
|
|
|
||||||
|
|
@ -329,6 +329,30 @@ static struct device *bluez5_find_device(struct impl *impl, uint32_t id)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int update_device_props(struct device *device)
|
||||||
|
{
|
||||||
|
struct pw_properties *p = device->props;
|
||||||
|
const char *s;
|
||||||
|
char temp[32], tmp[1024];
|
||||||
|
|
||||||
|
s = pw_properties_get(p, SPA_KEY_DEVICE_NAME);
|
||||||
|
if (s == NULL)
|
||||||
|
s = pw_properties_get(p, SPA_KEY_API_BLUEZ5_ADDRESS);
|
||||||
|
if (s == NULL)
|
||||||
|
s = pw_properties_get(p, SPA_KEY_DEVICE_DESCRIPTION);
|
||||||
|
if (s == NULL) {
|
||||||
|
snprintf(temp, sizeof(temp), "%d", device->id);
|
||||||
|
s = temp;
|
||||||
|
}
|
||||||
|
if (strstr(s, "bluez_card.") == s)
|
||||||
|
s += strlen("bluez_card.");
|
||||||
|
|
||||||
|
pw_properties_set(p, PW_KEY_DEVICE_NAME,
|
||||||
|
sm_media_session_sanitize_name(tmp, sizeof(tmp),
|
||||||
|
'_', "bluez_card.%s", s));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static void bluez5_update_device(struct impl *impl, struct device *dev,
|
static void bluez5_update_device(struct impl *impl, struct device *dev,
|
||||||
const struct spa_device_object_info *info)
|
const struct spa_device_object_info *info)
|
||||||
{
|
{
|
||||||
|
|
@ -338,6 +362,7 @@ static void bluez5_update_device(struct impl *impl, struct device *dev,
|
||||||
spa_debug_dict(0, info->props);
|
spa_debug_dict(0, info->props);
|
||||||
|
|
||||||
pw_properties_update(dev->props, info->props);
|
pw_properties_update(dev->props, info->props);
|
||||||
|
update_device_props(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void device_destroy(void *data)
|
static void device_destroy(void *data)
|
||||||
|
|
@ -376,7 +401,6 @@ static const struct sm_object_events device_events = {
|
||||||
.update = device_update,
|
.update = device_update,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static struct device *bluez5_create_device(struct impl *impl, uint32_t id,
|
static struct device *bluez5_create_device(struct impl *impl, uint32_t id,
|
||||||
const struct spa_device_object_info *info)
|
const struct spa_device_object_info *info)
|
||||||
{
|
{
|
||||||
|
|
@ -420,6 +444,7 @@ static struct device *bluez5_create_device(struct impl *impl, uint32_t id,
|
||||||
device->handle = handle;
|
device->handle = handle;
|
||||||
device->device = iface;
|
device->device = iface;
|
||||||
device->props = pw_properties_new_dict(info->props);
|
device->props = pw_properties_new_dict(info->props);
|
||||||
|
update_device_props(device);
|
||||||
device->sdevice = sm_media_session_export_device(impl->session,
|
device->sdevice = sm_media_session_export_device(impl->session,
|
||||||
&device->props->dict, device->device);
|
&device->props->dict, device->device);
|
||||||
if (device->sdevice == NULL) {
|
if (device->sdevice == NULL) {
|
||||||
|
|
|
||||||
|
|
@ -294,7 +294,7 @@ static int v4l2_update_device_props(struct device *dev)
|
||||||
{
|
{
|
||||||
struct pw_properties *p = dev->props;
|
struct pw_properties *p = dev->props;
|
||||||
const char *s, *d;
|
const char *s, *d;
|
||||||
char temp[32];
|
char temp[32], tmp[1024];
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if ((s = pw_properties_get(p, SPA_KEY_DEVICE_NAME)) == NULL) {
|
if ((s = pw_properties_get(p, SPA_KEY_DEVICE_NAME)) == NULL) {
|
||||||
|
|
@ -305,7 +305,9 @@ static int v4l2_update_device_props(struct device *dev)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pw_properties_setf(p, PW_KEY_DEVICE_NAME, "v4l2_device.%s", s);
|
pw_properties_set(p, PW_KEY_DEVICE_NAME,
|
||||||
|
sm_media_session_sanitize_name(tmp, sizeof(tmp),
|
||||||
|
'_', "v4l2_device.%s", s));
|
||||||
|
|
||||||
for (i = 2; i <= 99; i++) {
|
for (i = 2; i <= 99; i++) {
|
||||||
if ((d = pw_properties_get(p, PW_KEY_DEVICE_NAME)) == NULL)
|
if ((d = pw_properties_get(p, PW_KEY_DEVICE_NAME)) == NULL)
|
||||||
|
|
@ -314,7 +316,9 @@ static int v4l2_update_device_props(struct device *dev)
|
||||||
if (v4l2_find_device(dev->impl, SPA_ID_INVALID, d) == NULL)
|
if (v4l2_find_device(dev->impl, SPA_ID_INVALID, d) == NULL)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
pw_properties_setf(p, PW_KEY_DEVICE_NAME, "v4l2_device.%s.%d", s, i);
|
pw_properties_set(p, PW_KEY_DEVICE_NAME,
|
||||||
|
sm_media_session_sanitize_name(tmp, sizeof(tmp),
|
||||||
|
'_', "v4l2_device.%s.%d", s, i));
|
||||||
}
|
}
|
||||||
if (i == 99)
|
if (i == 99)
|
||||||
return -EEXIST;
|
return -EEXIST;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue