[pulseaudio-discuss] [PATCH v1 3/6] dbus: Support dynamically created card profiles

Tanu Kaskinen tanuk at iki.fi
Thu Oct 25 03:12:00 PDT 2012


On Tue, 2012-10-23 at 16:41 +0200, Mikel Astiz wrote:
> From: Mikel Astiz <mikel.astiz at bmw-carit.de>
> 
> Use the recently added core hook to detect when new profiles are added
> to a card, and update the D-Bus object accordingly.

> +static pa_hook_result_t card_profile_added_cb(void *hook_data, void *call_data, void *slot_data) {
> +    pa_core *core = hook_data;
> +    pa_dbusiface_card *c = slot_data;
> +    pa_card_profile *profile = call_data;
> +    pa_dbusiface_card_profile *p;
> +
> +    if (!card_has_profile(c->card, profile))
> +        return PA_HOOK_OK;
> +
> +    if (pa_hashmap_get(c->profiles, profile->name) != NULL)
> +        return PA_HOOK_OK;
> +
> +    p = pa_dbusiface_card_profile_new(c, core, profile, c->next_profile_index++);
> +    pa_hashmap_put(c->profiles, pa_dbusiface_card_profile_get_name(p), p);
> +
> +    return PA_HOOK_OK;
> +}

Why do you have the two checks in the beginning? As far as I can see,
the card will have the profile with 100% certainty, and also c->profiles
will not have the profile with 100% certainty.

The pa_hashmap_put() call could be inside pa_assert_se().

-- 
Tanu



More information about the pulseaudio-discuss mailing list