On 10/22/2012 10:46 AM, Mikel Astiz wrote:
From: Mikel Astiz <[email protected]>

Some cards might need to add profiles during their lifetime, that is,
after the card has been created.

How are volume control UIs, other modules, etc made aware that the profiles or ports of a card has changed?

---
  src/pulsecore/card.c | 15 +++++++++++++++
  src/pulsecore/card.h |  2 ++
  2 files changed, 17 insertions(+)

diff --git a/src/pulsecore/card.c b/src/pulsecore/card.c
index 492c051..79fe41c 100644
--- a/src/pulsecore/card.c
+++ b/src/pulsecore/card.c
@@ -79,6 +79,21 @@ void pa_card_new_data_set_name(pa_card_new_data *data, const 
char *name) {
      data->name = pa_xstrdup(name);
  }

+int pa_card_add_profile(pa_card *c, struct pa_card_profile *profile) {
+    pa_assert(c);
+    pa_assert(profile);
+
+    if (pa_hashmap_get(c->profiles, profile->name)) {
+        pa_log_error("Card %s already has profile %s", c->name, profile->name);
+        return -1;
+    }
+
+    /* take ownership of the profile */
+    pa_hashmap_put(c->profiles, profile->name, profile);
+
+    return 0;
+}
+
  void pa_card_new_data_set_profile(pa_card_new_data *data, const char 
*profile) {
      pa_assert(data);

diff --git a/src/pulsecore/card.h b/src/pulsecore/card.h
index 6f942e8..d181b10 100644
--- a/src/pulsecore/card.h
+++ b/src/pulsecore/card.h
@@ -100,6 +100,8 @@ void pa_card_new_data_done(pa_card_new_data *data);
  pa_card *pa_card_new(pa_core *c, pa_card_new_data *data);
  void pa_card_free(pa_card *c);

+int pa_card_add_profile(pa_card *c, struct pa_card_profile *profile);
+
  int pa_card_set_profile(pa_card *c, const char *name, pa_bool_t save);

  int pa_card_suspend(pa_card *c, pa_bool_t suspend, pa_suspend_cause_t cause);




--
David Henningsson, Canonical Ltd.
https://launchpad.net/~diwic
_______________________________________________
pulseaudio-discuss mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss

Reply via email to