mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-02 09:01:46 -05:00
Split up pa_alsa_init_proplist into two seperate functions for the card and snd_pcm_t specific parts
This commit is contained in:
parent
a45f971e43
commit
f03a7e43db
4 changed files with 36 additions and 29 deletions
|
|
@ -1205,7 +1205,26 @@ void pa_alsa_redirect_errors_dec(void) {
|
|||
snd_lib_error_set_handler(NULL);
|
||||
}
|
||||
|
||||
void pa_alsa_init_proplist(pa_proplist *p, snd_pcm_info_t *pcm_info) {
|
||||
void pa_alsa_init_proplist_card(pa_proplist *p, int card) {
|
||||
char *cn, *lcn;
|
||||
|
||||
pa_assert(p);
|
||||
pa_assert(card >= 0);
|
||||
|
||||
pa_proplist_setf(p, "alsa.card", "%i", card);
|
||||
|
||||
if (snd_card_get_name(card, &cn) >= 0) {
|
||||
pa_proplist_sets(p, "alsa.card_name", cn);
|
||||
free(cn);
|
||||
}
|
||||
|
||||
if (snd_card_get_longname(card, &lcn) >= 0) {
|
||||
pa_proplist_sets(p, "alsa.long_card_name", lcn);
|
||||
free(lcn);
|
||||
}
|
||||
}
|
||||
|
||||
void pa_alsa_init_proplist_pcm(pa_proplist *p, snd_pcm_info_t *pcm_info) {
|
||||
|
||||
static const char * const alsa_class_table[SND_PCM_CLASS_LAST+1] = {
|
||||
[SND_PCM_CLASS_GENERIC] = "generic",
|
||||
|
|
@ -1226,8 +1245,7 @@ void pa_alsa_init_proplist(pa_proplist *p, snd_pcm_info_t *pcm_info) {
|
|||
|
||||
snd_pcm_class_t class;
|
||||
snd_pcm_subclass_t subclass;
|
||||
const char *n, *id, *sdn;
|
||||
char *cn = NULL, *lcn = NULL;
|
||||
const char *n, *id, *sdn, *cn;
|
||||
int card;
|
||||
|
||||
pa_assert(p);
|
||||
|
|
@ -1260,13 +1278,8 @@ void pa_alsa_init_proplist(pa_proplist *p, snd_pcm_info_t *pcm_info) {
|
|||
pa_proplist_setf(p, "alsa.device", "%u", snd_pcm_info_get_device(pcm_info));
|
||||
|
||||
if ((card = snd_pcm_info_get_card(pcm_info)) >= 0) {
|
||||
pa_proplist_setf(p, "alsa.card", "%i", card);
|
||||
|
||||
if (snd_card_get_name(card, &cn) >= 0)
|
||||
pa_proplist_sets(p, "alsa.card_name", cn);
|
||||
|
||||
if (snd_card_get_longname(card, &lcn) >= 0)
|
||||
pa_proplist_sets(p, "alsa.long_card_name", lcn);
|
||||
pa_alsa_init_proplist_card(p, card);
|
||||
cn = pa_proplist_gets(p, "alsa.card_name");
|
||||
}
|
||||
|
||||
if (cn && n)
|
||||
|
|
@ -1275,9 +1288,6 @@ void pa_alsa_init_proplist(pa_proplist *p, snd_pcm_info_t *pcm_info) {
|
|||
pa_proplist_sets(p, PA_PROP_DEVICE_DESCRIPTION, cn);
|
||||
else if (n)
|
||||
pa_proplist_sets(p, PA_PROP_DEVICE_DESCRIPTION, n);
|
||||
|
||||
free(lcn);
|
||||
free(cn);
|
||||
}
|
||||
|
||||
int pa_alsa_recover_from_poll(snd_pcm_t *pcm, int revents) {
|
||||
|
|
|
|||
|
|
@ -102,7 +102,8 @@ void pa_alsa_dump_status(snd_pcm_t *pcm);
|
|||
void pa_alsa_redirect_errors_inc(void);
|
||||
void pa_alsa_redirect_errors_dec(void);
|
||||
|
||||
void pa_alsa_init_proplist(pa_proplist *p, snd_pcm_info_t *pcm_info);
|
||||
void pa_alsa_init_proplist_pcm(pa_proplist *p, snd_pcm_info_t *pcm_info);
|
||||
void pa_alsa_init_proplist_card(pa_proplist *p, int card);
|
||||
|
||||
int pa_alsa_recover_from_poll(snd_pcm_t *pcm, int revents);
|
||||
|
||||
|
|
|
|||
|
|
@ -1308,10 +1308,9 @@ int pa__init(pa_module*m) {
|
|||
use_tsched = FALSE;
|
||||
}
|
||||
|
||||
u = pa_xnew0(struct userdata, 1);
|
||||
m->userdata = u = pa_xnew0(struct userdata, 1);
|
||||
u->core = m->core;
|
||||
u->module = m;
|
||||
m->userdata = u;
|
||||
u->use_mmap = use_mmap;
|
||||
u->use_tsched = use_tsched;
|
||||
u->first = TRUE;
|
||||
|
|
@ -1439,7 +1438,7 @@ int pa__init(pa_module*m) {
|
|||
pa_sink_new_data_set_sample_spec(&data, &ss);
|
||||
pa_sink_new_data_set_channel_map(&data, &map);
|
||||
|
||||
pa_alsa_init_proplist(data.proplist, pcm_info);
|
||||
pa_alsa_init_proplist_pcm(data.proplist, pcm_info);
|
||||
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, u->device_name);
|
||||
pa_proplist_setf(data.proplist, PA_PROP_DEVICE_BUFFERING_BUFFER_SIZE, "%lu", (unsigned long) (period_frames * frame_size * nfrags));
|
||||
pa_proplist_setf(data.proplist, PA_PROP_DEVICE_BUFFERING_FRAGMENT_SIZE, "%lu", (unsigned long) (period_frames * frame_size));
|
||||
|
|
@ -1633,10 +1632,8 @@ void pa__done(pa_module*m) {
|
|||
|
||||
pa_assert(m);
|
||||
|
||||
if (!(u = m->userdata)) {
|
||||
pa_alsa_redirect_errors_dec();
|
||||
return;
|
||||
}
|
||||
if (!(u = m->userdata))
|
||||
goto finish;
|
||||
|
||||
if (u->sink)
|
||||
pa_sink_unlink(u->sink);
|
||||
|
|
@ -1677,7 +1674,8 @@ void pa__done(pa_module*m) {
|
|||
pa_xfree(u->device_name);
|
||||
pa_xfree(u);
|
||||
|
||||
snd_config_update_free_global();
|
||||
finish:
|
||||
|
||||
snd_config_update_free_global();
|
||||
pa_alsa_redirect_errors_dec();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1142,10 +1142,9 @@ int pa__init(pa_module*m) {
|
|||
use_tsched = FALSE;
|
||||
}
|
||||
|
||||
u = pa_xnew0(struct userdata, 1);
|
||||
m->userdata = u = pa_xnew0(struct userdata, 1);
|
||||
u->core = m->core;
|
||||
u->module = m;
|
||||
m->userdata = u;
|
||||
u->use_mmap = use_mmap;
|
||||
u->use_tsched = use_tsched;
|
||||
u->rtpoll = pa_rtpoll_new();
|
||||
|
|
@ -1266,7 +1265,7 @@ int pa__init(pa_module*m) {
|
|||
pa_source_new_data_set_sample_spec(&data, &ss);
|
||||
pa_source_new_data_set_channel_map(&data, &map);
|
||||
|
||||
pa_alsa_init_proplist(data.proplist, pcm_info);
|
||||
pa_alsa_init_proplist_pcm(data.proplist, pcm_info);
|
||||
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, u->device_name);
|
||||
pa_proplist_setf(data.proplist, PA_PROP_DEVICE_BUFFERING_BUFFER_SIZE, "%lu", (unsigned long) (period_frames * frame_size * nfrags));
|
||||
pa_proplist_setf(data.proplist, PA_PROP_DEVICE_BUFFERING_FRAGMENT_SIZE, "%lu", (unsigned long) (period_frames * frame_size));
|
||||
|
|
@ -1454,10 +1453,8 @@ void pa__done(pa_module*m) {
|
|||
|
||||
pa_assert(m);
|
||||
|
||||
if (!(u = m->userdata)) {
|
||||
pa_alsa_redirect_errors_dec();
|
||||
return;
|
||||
}
|
||||
if (!(u = m->userdata))
|
||||
goto finish;
|
||||
|
||||
if (u->source)
|
||||
pa_source_unlink(u->source);
|
||||
|
|
@ -1495,6 +1492,7 @@ void pa__done(pa_module*m) {
|
|||
pa_xfree(u->device_name);
|
||||
pa_xfree(u);
|
||||
|
||||
finish:
|
||||
snd_config_update_free_global();
|
||||
pa_alsa_redirect_errors_dec();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue