]> code.delx.au - pulseaudio/commitdiff
device-port: Add a card pointer to the ports.
authorpoljar (Damir Jelić) <poljarinho@gmail.com>
Thu, 17 Jan 2013 19:55:14 +0000 (20:55 +0100)
committerTanu Kaskinen <tanuk@iki.fi>
Sun, 20 Jan 2013 07:27:05 +0000 (09:27 +0200)
This way we can directly access the card that owns the port instead of
iterating over all cards.

src/pulsecore/card.c
src/pulsecore/device-port.c
src/pulsecore/device-port.h

index 1cde297cdd124b423a99ccc10a6f95b6b740437f..3077193a620fdecb9264d271ff3d772c0ac75bc1 100644 (file)
@@ -102,8 +102,10 @@ void pa_card_add_ports(pa_card *c, pa_hashmap *ports) {
     pa_assert(ports);
 
     /* take ownership of the ports */
-    PA_HASHMAP_FOREACH(p, ports, state)
+    PA_HASHMAP_FOREACH(p, ports, state) {
+        p->card = c;
         pa_assert_se(pa_hashmap_put(c->ports, p->name, p) >= 0);
+    }
 
     pa_subscription_post(c->core, PA_SUBSCRIPTION_EVENT_CARD|PA_SUBSCRIPTION_EVENT_CHANGE, c->index);
 
@@ -145,6 +147,7 @@ pa_card *pa_card_new(pa_core *core, pa_card_new_data *data) {
     const char *name;
     void *state;
     pa_card_profile *profile;
+    pa_device_port *port;
 
     pa_core_assert_ref(core);
     pa_assert(data);
@@ -188,6 +191,11 @@ pa_card *pa_card_new(pa_core *core, pa_card_new_data *data) {
             profile->card = c;
     }
 
+    if (c->ports) {
+        PA_HASHMAP_FOREACH(port, c->ports, state)
+            port->card = c;
+    }
+
     c->active_profile = NULL;
     c->save_profile = FALSE;
 
index 9ea54e3d400d7dc1c346b784489169d1ca74d3de..cb6fa980676477a4efcfba9e308f613b02f86fcf 100644 (file)
@@ -92,6 +92,7 @@ pa_device_port *pa_device_port_new(pa_core *c, const char *name, const char *des
     p->name = pa_xstrdup(name);
     p->description = pa_xstrdup(description);
     p->core = c;
+    p->card = NULL;
     p->priority = 0;
     p->available = PA_PORT_AVAILABLE_UNKNOWN;
     p->profiles = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
index a5c6420bae02af5ac0266c8a46e7a7f5a70a0347..cea00e68148060ea91c85f9c3708dcb4382772be 100644 (file)
@@ -36,10 +36,12 @@ typedef struct pa_device_port pa_device_port;
 #include <pulsecore/object.h>
 #include <pulsecore/hashmap.h>
 #include <pulsecore/core.h>
+#include <pulsecore/card.h>
 
 struct pa_device_port {
     pa_object parent; /* Needed for reference counting */
     pa_core *core;
+    pa_card *card;
 
     char *name;
     char *description;