[pulseaudio-discuss] [PATCH] card: Log availability status when choosing initial profile
Tanu Kaskinen
tanuk at iki.fi
Mon Aug 13 11:57:26 UTC 2018
On Thu, 2018-07-26 at 13:57 -0700, João Paulo Rechi Vita wrote:
> On Fri, Jun 29, 2018 at 5:02 AM, Tanu Kaskinen <tanuk at iki.fi> wrote:
> > On Wed, 2018-06-27 at 15:01 -0700, João Paulo Rechi Vita wrote:
> > > ---
> > > src/pulsecore/card.c | 5 +++++
> > > 1 file changed, 5 insertions(+)
> > >
> > > diff --git a/src/pulsecore/card.c b/src/pulsecore/card.c
> > > index 0112cffb1..4ead3a606 100644
> > > --- a/src/pulsecore/card.c
> > > +++ b/src/pulsecore/card.c
> > > @@ -204,7 +204,10 @@ void pa_card_choose_initial_profile(pa_card *card) {
> > > * or if all profiles are unavailable, pick the profile with the highest
> > > * priority regardless of its availability. */
> > >
> > > + pa_log_debug("Looking for an initial profile for card %s", card->name);
> > > PA_HASHMAP_FOREACH(profile, card->profiles, state) {
> > > + pa_log_debug("profile %s availability %s", profile->name, profile->available == PA_AVAILABLE_YES ? "yes" :
> > > + profile->available == PA_AVAILABLE_NO ? "no" : "unknown");
> > > if (profile->available == PA_AVAILABLE_NO)
> > > continue;
> > >
> > > @@ -213,6 +216,7 @@ void pa_card_choose_initial_profile(pa_card *card) {
> > > }
> > >
> > > if (!best) {
> > > + pa_log_info("No profile with availability status 'yes' or 'unknown' found for card %s", card->name);
> > > PA_HASHMAP_FOREACH(profile, card->profiles, state) {
> > > if (!best || profile->priority > best->priority)
> > > best = profile;
> > > @@ -220,6 +224,7 @@ void pa_card_choose_initial_profile(pa_card *card) {
> > > }
> > > pa_assert(best);
> > >
> > > + pa_log_info("Initial profile %s chosen for card %s", best->name, card->name);
> >
> > This message belongs to pa_card_put(), because at this point the
> > initial profile may still change, either in the CHOOSE_INITIAL_PROFILE
> > hook or by the card implementation (at least module-alsa-card supports
> > overriding the automatic policy). If you need to log a message at this
> > point, the wording needs to be different (I couldn't immediately come
> > up with a good example).
> >
>
> (sorry it took me so long to reply to this)
(slow replies continue)
> Yes, I understand the initial profile may still change at this point,
> but what I'm trying to log here is the whole logic to decide the
> initial profile, starting from this point. Modules handling the
> CHOOSE_INITIAL_PROFILE trigger should probably log a debug message
> about it. The only two modules I've found that connect callbacks to
> CHOOSE_INITIAL_PROFILE are module-card-restore and
> module-bluetooth-policy, both of which log a message about it.
>
> About the module-alsa-card override, I think you are referring to when
> it is loaded with the "profile" modarg, we would also get a message
> from pa_card_set_profile.
pa_card_set_profile() doesn't log anything before pa_card_put() has
been called. If you want detailed logs about the profile
initialization, I suppose we should change pa_card_set_profile() so
that it logs changes always.
> But I understand your point of trying to be clear that this initial
> choice is subject to change before the card is active and available.
> Maybe something like ("Profile %s chosen during card %s creation",
> best->name, card->name) would achieve it?
That's better, I'd accept that. Here's another suggestion:
pa_log_info("%s: active_profile: %s", card->name, card->active_profile->name);
That would be somewhat similar to the format that I nowadays prefer to
use for variable change messages (pa_card_set_profile() could be
updated to use this too):
pa_log_info("%s: variable: %s -> %s", object->name, old_value, new_value);
--
Tanu
https://www.patreon.com/tanuk
https://liberapay.com/tanuk
More information about the pulseaudio-discuss
mailing list