diff options
author | Patrick Williams <patrick@stwcx.xyz> | 2016-08-17 14:31:25 -0500 |
---|---|---|
committer | Patrick Williams <patrick@stwcx.xyz> | 2016-08-22 16:43:26 +0000 |
commit | 60f9d69e016b11c468c98ea75ba0a60c44afbbc4 (patch) | |
tree | ecb49581a9e41a37943c22cd9ef3f63451b20ee7 /import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-card-add-pa_card_profile.ports.patch | |
parent | e18c61205e0234b03697129c20cc69c9b3940efc (diff) | |
download | blackbird-openbmc-60f9d69e016b11c468c98ea75ba0a60c44afbbc4.tar.gz blackbird-openbmc-60f9d69e016b11c468c98ea75ba0a60c44afbbc4.zip |
yocto-poky: Move to import-layers subdir
We are going to import additional layers, so create a subdir to
hold all of the layers that we import with git-subtree.
Change-Id: I6f732153a22be8ca663035c518837e3cc5ec0799
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Diffstat (limited to 'import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-card-add-pa_card_profile.ports.patch')
-rw-r--r-- | import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-card-add-pa_card_profile.ports.patch | 218 |
1 files changed, 218 insertions, 0 deletions
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-card-add-pa_card_profile.ports.patch b/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-card-add-pa_card_profile.ports.patch new file mode 100644 index 000000000..84c951940 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-card-add-pa_card_profile.ports.patch @@ -0,0 +1,218 @@ +From d1c02971867bea10afcafc82c965414012c4d6bd Mon Sep 17 00:00:00 2001 +From: Tanu Kaskinen <tanuk@iki.fi> +Date: Fri, 23 Oct 2015 12:23:13 +0300 +Subject: [PATCH 1/4] card: add pa_card_profile.ports + +Having ports accessible from pa_card_profile allows checking whether all ports +of a profile are unavailable, and therefore helps with managing the profile +availability (implemented in a later patch). + +http://bugzilla.yoctoproject.org/show_bug.cgi?id=8448 + +Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> + +Rebased on 8.0. + +Upstream-Status: Denied [The patch set needs some work to be accepted. +The review thread: +http://thread.gmane.org/gmane.comp.audio.pulseaudio.general/24301] + +Signed-off-by: Tanu Kaskinen <tanuk@iki.fi> +--- + src/modules/alsa/alsa-mixer.c | 4 +++- + src/modules/alsa/alsa-ucm.c | 1 + + src/modules/bluetooth/module-bluez4-device.c | 6 ++++++ + src/modules/bluetooth/module-bluez5-device.c | 6 ++++++ + src/pulsecore/card.c | 15 +++++++++++++++ + src/pulsecore/card.h | 4 ++++ + src/pulsecore/device-port.c | 7 ++++++- + 7 files changed, 41 insertions(+), 2 deletions(-) + +diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c +index 1fe2a02..5b76b06 100644 +--- a/src/modules/alsa/alsa-mixer.c ++++ b/src/modules/alsa/alsa-mixer.c +@@ -4783,8 +4783,10 @@ static pa_device_port* device_port_alsa_init(pa_hashmap *ports, /* card ports */ + path->port = p; + } + +- if (cp) ++ if (cp) { + pa_hashmap_put(p->profiles, cp->name, cp); ++ pa_card_profile_add_port(cp, p); ++ } + + if (extra) { + pa_hashmap_put(extra, p->name, p); +diff --git a/src/modules/alsa/alsa-ucm.c b/src/modules/alsa/alsa-ucm.c +index 42f3242..68fcc26 100644 +--- a/src/modules/alsa/alsa-ucm.c ++++ b/src/modules/alsa/alsa-ucm.c +@@ -791,6 +791,7 @@ static void ucm_add_port_combination( + if (cp) { + pa_log_debug("Adding profile %s to port %s.", cp->name, port->name); + pa_hashmap_put(port->profiles, cp->name, cp); ++ pa_card_profile_add_port(cp, port); + } + + if (hash) { +diff --git a/src/modules/bluetooth/module-bluez4-device.c b/src/modules/bluetooth/module-bluez4-device.c +index 9a921a5..adecb32 100644 +--- a/src/modules/bluetooth/module-bluez4-device.c ++++ b/src/modules/bluetooth/module-bluez4-device.c +@@ -2180,6 +2180,7 @@ static pa_card_profile *create_card_profile(struct userdata *u, const char *uuid + p->max_sink_channels = 2; + p->max_source_channels = 0; + pa_hashmap_put(output_port->profiles, p->name, p); ++ pa_card_profile_add_port(p, output_port); + + d = PA_CARD_PROFILE_DATA(p); + *d = PA_BLUEZ4_PROFILE_A2DP; +@@ -2191,6 +2192,7 @@ static pa_card_profile *create_card_profile(struct userdata *u, const char *uuid + p->max_sink_channels = 0; + p->max_source_channels = 2; + pa_hashmap_put(input_port->profiles, p->name, p); ++ pa_card_profile_add_port(p, input_port); + + d = PA_CARD_PROFILE_DATA(p); + *d = PA_BLUEZ4_PROFILE_A2DP_SOURCE; +@@ -2203,6 +2205,8 @@ static pa_card_profile *create_card_profile(struct userdata *u, const char *uuid + p->max_source_channels = 1; + pa_hashmap_put(input_port->profiles, p->name, p); + pa_hashmap_put(output_port->profiles, p->name, p); ++ pa_card_profile_add_port(p, input_port); ++ pa_card_profile_add_port(p, output_port); + + d = PA_CARD_PROFILE_DATA(p); + *d = PA_BLUEZ4_PROFILE_HSP; +@@ -2215,6 +2219,8 @@ static pa_card_profile *create_card_profile(struct userdata *u, const char *uuid + p->max_source_channels = 1; + pa_hashmap_put(input_port->profiles, p->name, p); + pa_hashmap_put(output_port->profiles, p->name, p); ++ pa_card_profile_add_port(p, input_port); ++ pa_card_profile_add_port(p, output_port); + + d = PA_CARD_PROFILE_DATA(p); + *d = PA_BLUEZ4_PROFILE_HFGW; +diff --git a/src/modules/bluetooth/module-bluez5-device.c b/src/modules/bluetooth/module-bluez5-device.c +index 84e6d55..b015c67 100644 +--- a/src/modules/bluetooth/module-bluez5-device.c ++++ b/src/modules/bluetooth/module-bluez5-device.c +@@ -1790,6 +1790,7 @@ static pa_card_profile *create_card_profile(struct userdata *u, const char *uuid + cp->max_sink_channels = 2; + cp->max_source_channels = 0; + pa_hashmap_put(output_port->profiles, cp->name, cp); ++ pa_card_profile_add_port(cp, output_port); + + p = PA_CARD_PROFILE_DATA(cp); + *p = PA_BLUETOOTH_PROFILE_A2DP_SINK; +@@ -1801,6 +1802,7 @@ static pa_card_profile *create_card_profile(struct userdata *u, const char *uuid + cp->max_sink_channels = 0; + cp->max_source_channels = 2; + pa_hashmap_put(input_port->profiles, cp->name, cp); ++ pa_card_profile_add_port(cp, input_port); + + p = PA_CARD_PROFILE_DATA(cp); + *p = PA_BLUETOOTH_PROFILE_A2DP_SOURCE; +@@ -1813,6 +1815,8 @@ static pa_card_profile *create_card_profile(struct userdata *u, const char *uuid + cp->max_source_channels = 1; + pa_hashmap_put(input_port->profiles, cp->name, cp); + pa_hashmap_put(output_port->profiles, cp->name, cp); ++ pa_card_profile_add_port(cp, input_port); ++ pa_card_profile_add_port(cp, output_port); + + p = PA_CARD_PROFILE_DATA(cp); + *p = PA_BLUETOOTH_PROFILE_HEADSET_HEAD_UNIT; +@@ -1825,6 +1829,8 @@ static pa_card_profile *create_card_profile(struct userdata *u, const char *uuid + cp->max_source_channels = 1; + pa_hashmap_put(input_port->profiles, cp->name, cp); + pa_hashmap_put(output_port->profiles, cp->name, cp); ++ pa_card_profile_add_port(cp, input_port); ++ pa_card_profile_add_port(cp, output_port); + + p = PA_CARD_PROFILE_DATA(cp); + *p = PA_BLUETOOTH_PROFILE_HEADSET_AUDIO_GATEWAY; +diff --git a/src/pulsecore/card.c b/src/pulsecore/card.c +index b6cbbf7..f92ac87 100644 +--- a/src/pulsecore/card.c ++++ b/src/pulsecore/card.c +@@ -45,6 +45,7 @@ pa_card_profile *pa_card_profile_new(const char *name, const char *description, + c->name = pa_xstrdup(name); + c->description = pa_xstrdup(description); + c->available = PA_AVAILABLE_UNKNOWN; ++ c->ports = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func); + + return c; + } +@@ -52,6 +53,14 @@ pa_card_profile *pa_card_profile_new(const char *name, const char *description, + void pa_card_profile_free(pa_card_profile *c) { + pa_assert(c); + ++ if (c->ports) { ++ pa_device_port *port; ++ void *state; ++ PA_HASHMAP_FOREACH(port, c->ports, state) ++ pa_hashmap_remove (port->profiles, c->name); ++ pa_hashmap_free(c->ports); ++ } ++ + pa_xfree(c->input_name); + pa_xfree(c->output_name); + pa_xfree(c->name); +@@ -59,6 +68,12 @@ void pa_card_profile_free(pa_card_profile *c) { + pa_xfree(c); + } + ++void pa_card_profile_add_port(pa_card_profile *profile, pa_device_port *port) { ++ pa_assert(profile); ++ ++ pa_hashmap_put(profile->ports, port->name, port); ++} ++ + void pa_card_profile_set_available(pa_card_profile *c, pa_available_t available) { + pa_core *core; + +diff --git a/src/pulsecore/card.h b/src/pulsecore/card.h +index 30bfc0e..fff9057 100644 +--- a/src/pulsecore/card.h ++++ b/src/pulsecore/card.h +@@ -50,6 +50,8 @@ struct pa_card_profile { + unsigned priority; + pa_available_t available; /* PA_AVAILABLE_UNKNOWN, PA_AVAILABLE_NO or PA_AVAILABLE_YES */ + ++ pa_hashmap *ports; /* port name -> pa_device_port */ ++ + /* We probably want to have different properties later on here */ + unsigned n_sinks; + unsigned n_sources; +@@ -107,6 +109,8 @@ typedef struct pa_card_new_data { + pa_card_profile *pa_card_profile_new(const char *name, const char *description, size_t extra); + void pa_card_profile_free(pa_card_profile *c); + ++void pa_card_profile_add_port(pa_card_profile *profile, pa_device_port *port); ++ + /* The profile's available status has changed */ + void pa_card_profile_set_available(pa_card_profile *c, pa_available_t available); + +diff --git a/src/pulsecore/device-port.c b/src/pulsecore/device-port.c +index 5807d3e..d12dfbc 100644 +--- a/src/pulsecore/device-port.c ++++ b/src/pulsecore/device-port.c +@@ -107,8 +107,13 @@ static void device_port_free(pa_object *o) { + if (p->proplist) + pa_proplist_free(p->proplist); + +- if (p->profiles) ++ if (p->profiles) { ++ pa_card_profile *profile; ++ void *state; ++ PA_HASHMAP_FOREACH(profile, p->profiles, state) ++ pa_hashmap_remove (profile->ports, p->name); + pa_hashmap_free(p->profiles); ++ } + + pa_xfree(p->preferred_profile); + pa_xfree(p->name); +-- +2.7.0 + |