mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2026-01-05 11:09:11 -05:00
ladspa,remap: make description of sink follow moves
This commit is contained in:
parent
46b9ca7fd5
commit
b245b54702
2 changed files with 43 additions and 6 deletions
|
|
@ -82,6 +82,8 @@ struct userdata {
|
||||||
LADSPA_Data control_out;
|
LADSPA_Data control_out;
|
||||||
|
|
||||||
pa_memblockq *memblockq;
|
pa_memblockq *memblockq;
|
||||||
|
|
||||||
|
pa_bool_t auto_desc;
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char* const valid_modargs[] = {
|
static const char* const valid_modargs[] = {
|
||||||
|
|
@ -423,6 +425,19 @@ static void sink_input_moving_cb(pa_sink_input *i, pa_sink *dest) {
|
||||||
pa_sink_update_flags(u->sink, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY, dest->flags);
|
pa_sink_update_flags(u->sink, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY, dest->flags);
|
||||||
} else
|
} else
|
||||||
pa_sink_set_asyncmsgq(u->sink, NULL);
|
pa_sink_set_asyncmsgq(u->sink, NULL);
|
||||||
|
|
||||||
|
if (u->auto_desc && dest) {
|
||||||
|
const char *z;
|
||||||
|
pa_proplist *pl;
|
||||||
|
|
||||||
|
pl = pa_proplist_new();
|
||||||
|
z = pa_proplist_gets(dest->proplist, PA_PROP_DEVICE_DESCRIPTION);
|
||||||
|
pa_proplist_setf(pl, PA_PROP_DEVICE_DESCRIPTION, "LADSPA Plugin %s on %s",
|
||||||
|
pa_proplist_gets(u->sink->proplist, "device.ladspa.name"), z ? z : dest->name);
|
||||||
|
|
||||||
|
pa_sink_update_proplist(u->sink, PA_UPDATE_REPLACE, pl);
|
||||||
|
pa_proplist_free(pl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Called from main context */
|
/* Called from main context */
|
||||||
|
|
@ -451,7 +466,6 @@ int pa__init(pa_module*m) {
|
||||||
pa_channel_map map;
|
pa_channel_map map;
|
||||||
pa_modargs *ma;
|
pa_modargs *ma;
|
||||||
char *t;
|
char *t;
|
||||||
const char *z;
|
|
||||||
pa_sink *master;
|
pa_sink *master;
|
||||||
pa_sink_input_new_data sink_input_data;
|
pa_sink_input_new_data sink_input_data;
|
||||||
pa_sink_new_data sink_data;
|
pa_sink_new_data sink_data;
|
||||||
|
|
@ -765,8 +779,6 @@ int pa__init(pa_module*m) {
|
||||||
sink_data.name = pa_sprintf_malloc("%s.ladspa", master->name);
|
sink_data.name = pa_sprintf_malloc("%s.ladspa", master->name);
|
||||||
pa_sink_new_data_set_sample_spec(&sink_data, &ss);
|
pa_sink_new_data_set_sample_spec(&sink_data, &ss);
|
||||||
pa_sink_new_data_set_channel_map(&sink_data, &map);
|
pa_sink_new_data_set_channel_map(&sink_data, &map);
|
||||||
z = pa_proplist_gets(master->proplist, PA_PROP_DEVICE_DESCRIPTION);
|
|
||||||
pa_proplist_setf(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION, "LADSPA Plugin %s on %s", d->Name, z ? z : master->name);
|
|
||||||
pa_proplist_sets(sink_data.proplist, PA_PROP_DEVICE_MASTER_DEVICE, master->name);
|
pa_proplist_sets(sink_data.proplist, PA_PROP_DEVICE_MASTER_DEVICE, master->name);
|
||||||
pa_proplist_sets(sink_data.proplist, PA_PROP_DEVICE_CLASS, "filter");
|
pa_proplist_sets(sink_data.proplist, PA_PROP_DEVICE_CLASS, "filter");
|
||||||
pa_proplist_sets(sink_data.proplist, "device.ladspa.module", plugin);
|
pa_proplist_sets(sink_data.proplist, "device.ladspa.module", plugin);
|
||||||
|
|
@ -782,6 +794,13 @@ int pa__init(pa_module*m) {
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((u->auto_desc = !pa_proplist_contains(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION))) {
|
||||||
|
const char *z;
|
||||||
|
|
||||||
|
z = pa_proplist_gets(master->proplist, PA_PROP_DEVICE_DESCRIPTION);
|
||||||
|
pa_proplist_setf(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION, "LADSPA Plugin %s on %s", d->Name, z ? z : master->name);
|
||||||
|
}
|
||||||
|
|
||||||
u->sink = pa_sink_new(m->core, &sink_data,
|
u->sink = pa_sink_new(m->core, &sink_data,
|
||||||
PA_SINK_HW_MUTE_CTRL|PA_SINK_HW_VOLUME_CTRL|PA_SINK_DECIBEL_VOLUME|
|
PA_SINK_HW_MUTE_CTRL|PA_SINK_HW_VOLUME_CTRL|PA_SINK_DECIBEL_VOLUME|
|
||||||
(master->flags & (PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY)));
|
(master->flags & (PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY)));
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,8 @@ struct userdata {
|
||||||
|
|
||||||
pa_sink *sink;
|
pa_sink *sink;
|
||||||
pa_sink_input *sink_input;
|
pa_sink_input *sink_input;
|
||||||
|
|
||||||
|
pa_bool_t auto_desc;
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char* const valid_modargs[] = {
|
static const char* const valid_modargs[] = {
|
||||||
|
|
@ -307,6 +309,18 @@ static void sink_input_moving_cb(pa_sink_input *i, pa_sink *dest) {
|
||||||
pa_sink_update_flags(u->sink, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY, dest->flags);
|
pa_sink_update_flags(u->sink, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY, dest->flags);
|
||||||
} else
|
} else
|
||||||
pa_sink_set_asyncmsgq(u->sink, NULL);
|
pa_sink_set_asyncmsgq(u->sink, NULL);
|
||||||
|
|
||||||
|
if (u->auto_desc && dest) {
|
||||||
|
const char *k;
|
||||||
|
pa_proplist *pl;
|
||||||
|
|
||||||
|
pl = pa_proplist_new();
|
||||||
|
k = pa_proplist_gets(dest->proplist, PA_PROP_DEVICE_DESCRIPTION);
|
||||||
|
pa_proplist_setf(pl, PA_PROP_DEVICE_DESCRIPTION, "Remapped %s", k ? k : dest->name);
|
||||||
|
|
||||||
|
pa_sink_update_proplist(u->sink, PA_UPDATE_REPLACE, pl);
|
||||||
|
pa_proplist_free(pl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int pa__init(pa_module*m) {
|
int pa__init(pa_module*m) {
|
||||||
|
|
@ -314,7 +328,6 @@ int pa__init(pa_module*m) {
|
||||||
pa_sample_spec ss;
|
pa_sample_spec ss;
|
||||||
pa_channel_map sink_map, stream_map;
|
pa_channel_map sink_map, stream_map;
|
||||||
pa_modargs *ma;
|
pa_modargs *ma;
|
||||||
const char *k;
|
|
||||||
pa_sink *master;
|
pa_sink *master;
|
||||||
pa_sink_input_new_data sink_input_data;
|
pa_sink_input_new_data sink_input_data;
|
||||||
pa_sink_new_data sink_data;
|
pa_sink_new_data sink_data;
|
||||||
|
|
@ -370,8 +383,6 @@ int pa__init(pa_module*m) {
|
||||||
sink_data.name = pa_sprintf_malloc("%s.remapped", master->name);
|
sink_data.name = pa_sprintf_malloc("%s.remapped", master->name);
|
||||||
pa_sink_new_data_set_sample_spec(&sink_data, &ss);
|
pa_sink_new_data_set_sample_spec(&sink_data, &ss);
|
||||||
pa_sink_new_data_set_channel_map(&sink_data, &sink_map);
|
pa_sink_new_data_set_channel_map(&sink_data, &sink_map);
|
||||||
k = pa_proplist_gets(master->proplist, PA_PROP_DEVICE_DESCRIPTION);
|
|
||||||
pa_proplist_setf(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION, "Remapped %s", k ? k : master->name);
|
|
||||||
pa_proplist_sets(sink_data.proplist, PA_PROP_DEVICE_MASTER_DEVICE, master->name);
|
pa_proplist_sets(sink_data.proplist, PA_PROP_DEVICE_MASTER_DEVICE, master->name);
|
||||||
pa_proplist_sets(sink_data.proplist, PA_PROP_DEVICE_CLASS, "filter");
|
pa_proplist_sets(sink_data.proplist, PA_PROP_DEVICE_CLASS, "filter");
|
||||||
|
|
||||||
|
|
@ -381,6 +392,13 @@ int pa__init(pa_module*m) {
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((u->auto_desc = !pa_proplist_contains(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION))) {
|
||||||
|
const char *k;
|
||||||
|
|
||||||
|
k = pa_proplist_gets(master->proplist, PA_PROP_DEVICE_DESCRIPTION);
|
||||||
|
pa_proplist_setf(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION, "Remapped %s", k ? k : master->name);
|
||||||
|
}
|
||||||
|
|
||||||
u->sink = pa_sink_new(m->core, &sink_data, master->flags & (PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY));
|
u->sink = pa_sink_new(m->core, &sink_data, master->flags & (PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY));
|
||||||
pa_sink_new_data_done(&sink_data);
|
pa_sink_new_data_done(&sink_data);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue