commit:     0ae1d3c9175e02ef29cbc72113ccb6b09db12afb
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Tue Apr 18 11:10:30 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Tue Apr 18 11:10:30 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0ae1d3c9

media-video/pipewire: backport recommended aptches to 0.3.69

Closes: https://bugs.gentoo.org/904507
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../0001-context-improve-state-calculations.patch  | 59 ++++++++++++++++++++++
 .../0002-revert-alsa-mixer-control-element.patch   | 38 ++++++++++++++
 .../files/0.3.69/0003-filter-chain-biquads.patch   | 21 ++++++++
 ...ire-0.3.69.ebuild => pipewire-0.3.69-r1.ebuild} |  0
 4 files changed, 118 insertions(+)

diff --git 
a/media-video/pipewire/files/0.3.69/0001-context-improve-state-calculations.patch
 
b/media-video/pipewire/files/0.3.69/0001-context-improve-state-calculations.patch
new file mode 100644
index 000000000000..29469205cf48
--- /dev/null
+++ 
b/media-video/pipewire/files/0.3.69/0001-context-improve-state-calculations.patch
@@ -0,0 +1,59 @@
+https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/a275e825c75c93775baaeb17479e38d035d9b79a
+
+From a275e825c75c93775baaeb17479e38d035d9b79a Mon Sep 17 00:00:00 2001
+From: Wim Taymans <[email protected]>
+Date: Fri, 14 Apr 2023 12:01:03 +0200
+Subject: [PATCH] context: improve state calculations
+
+Always make peers of non-passive links runnable, even if we already
+visited the peer node. This makes non-passive links between drivers set the
+drivers to runnable. (midi-bridge, source to sink). It also makes nodes
+collected from the (link-)group runnable when they are linked together.
+
+To calculate the runnable state of the other nodes, only start from
+non-driver runnable nodes (like we already did when following links).
+
+This makes a link from echo-cancel-source to echo-cancel-sink activate
+the echo-canceler chain instead of staying idle.
+--- a/src/pipewire/context.c
++++ b/src/pipewire/context.c
+@@ -788,9 +788,6 @@ static inline int run_nodes(struct pw_context *context, 
struct pw_impl_node *nod
+       struct pw_impl_port *p;
+       struct pw_impl_link *l;
+ 
+-      if (!node->runnable)
+-              return 0;
+-
+       pw_log_debug("node %p: '%s'", node, node->name);
+ 
+       spa_list_for_each(p, &node->input_ports, link) {
+@@ -885,7 +882,7 @@ static int collect_nodes(struct pw_context *context, 
struct pw_impl_node *node,
+ 
+                               pw_impl_link_prepare(l);
+ 
+-                              if (!l->prepared || (t != n && t->visited))
++                              if (!l->prepared)
+                                       continue;
+ 
+                               if (!l->passive)
+@@ -906,7 +903,7 @@ static int collect_nodes(struct pw_context *context, 
struct pw_impl_node *node,
+ 
+                               pw_impl_link_prepare(l);
+ 
+-                              if (!l->prepared || (t != n && t->visited))
++                              if (!l->prepared)
+                                       continue;
+ 
+                               if (!l->passive)
+@@ -936,7 +933,8 @@ static int collect_nodes(struct pw_context *context, 
struct pw_impl_node *node,
+               pw_log_debug(" next node %p: '%s' runnable:%u", n, n->name, 
n->runnable);
+       }
+       spa_list_for_each(n, collect, sort_link)
+-              run_nodes(context, n, collect);
++              if (!n->driver && n->runnable)
++                      run_nodes(context, n, collect);
+ 
+       return 0;
+ }
+-- 
+GitLab

diff --git 
a/media-video/pipewire/files/0.3.69/0002-revert-alsa-mixer-control-element.patch
 
b/media-video/pipewire/files/0.3.69/0002-revert-alsa-mixer-control-element.patch
new file mode 100644
index 000000000000..1076ad101d0f
--- /dev/null
+++ 
b/media-video/pipewire/files/0.3.69/0002-revert-alsa-mixer-control-element.patch
@@ -0,0 +1,38 @@
+https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/916f1cdfbfdc414d83031aef941a9909d1e603bd
+
+From 916f1cdfbfdc414d83031aef941a9909d1e603bd Mon Sep 17 00:00:00 2001
+From: Wim Taymans <[email protected]>
+Date: Fri, 14 Apr 2023 16:32:18 +0200
+Subject: [PATCH] Revert "alsa-mixer: allow to re-attach the mixer control
+ element"
+
+This reverts commit b554fc20e9ff97064721c89eb15b1b45870584e5.
+--- a/spa/plugins/alsa/acp/alsa-util.c
++++ b/spa/plugins/alsa/acp/alsa-util.c
+@@ -1648,20 +1648,12 @@ static int mixer_class_event(snd_mixer_class_t *class, 
unsigned int mask,
+     } else if (mask & SND_CTL_EVENT_MASK_ADD) {
+         snd_ctl_elem_iface_t iface = snd_hctl_elem_get_interface(helem);
+         if (iface == SND_CTL_ELEM_IFACE_CARD || iface == 
SND_CTL_ELEM_IFACE_PCM) {
+-            snd_mixer_t *mixer = snd_mixer_class_get_mixer(class);
+-            snd_ctl_elem_iface_t iface = snd_hctl_elem_get_interface(helem);
+-            const char *name = snd_hctl_elem_get_name(helem);
+-            const int index = snd_hctl_elem_get_index(helem);
+-            const int device = snd_hctl_elem_get_device(helem);
+             snd_mixer_elem_t *new_melem;
+ 
+-            new_melem = pa_alsa_mixer_find(mixer, iface, name, index, device);
+-            if (!new_melem) {
+-                /* Put the hctl pointer as our private data - it will be 
useful for callbacks */
+-                if ((err = snd_mixer_elem_new(&new_melem, 
SND_MIXER_ELEM_PULSEAUDIO, 0, helem, NULL)) < 0) {
+-                    pa_log_warn("snd_mixer_elem_new failed: %s", 
pa_alsa_strerror(err));
+-                    return 0;
+-                }
++            /* Put the hctl pointer as our private data - it will be useful 
for callbacks */
++            if ((err = snd_mixer_elem_new(&new_melem, 
SND_MIXER_ELEM_PULSEAUDIO, 0, helem, NULL)) < 0) {
++                pa_log_warn("snd_mixer_elem_new failed: %s", 
pa_alsa_strerror(err));
++                return 0;
+             }
+ 
+             if ((err = snd_mixer_elem_attach(new_melem, helem)) < 0) {
+-- 
+GitLab

diff --git a/media-video/pipewire/files/0.3.69/0003-filter-chain-biquads.patch 
b/media-video/pipewire/files/0.3.69/0003-filter-chain-biquads.patch
new file mode 100644
index 000000000000..f01362604f51
--- /dev/null
+++ b/media-video/pipewire/files/0.3.69/0003-filter-chain-biquads.patch
@@ -0,0 +1,21 @@
+https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/381be87e379996c502786883f90a19ac49e84c10
+
+From 381be87e379996c502786883f90a19ac49e84c10 Mon Sep 17 00:00:00 2001
+From: Wim Taymans <[email protected]>
+Date: Sun, 16 Apr 2023 18:38:52 +0200
+Subject: [PATCH] filter-chain: config is only required for bq_raw
+
+Fixes #3161
+--- a/src/modules/module-filter-chain/builtin_plugin.c
++++ b/src/modules/module-filter-chain/builtin_plugin.c
+@@ -287,6 +287,8 @@ static void *bq_instantiate(const struct fc_descriptor * 
Descriptor,
+       impl->rate = SampleRate;
+       impl->b0 = impl->a0 = 1.0f;
+       impl->type = bq_type_from_name(Descriptor->name);
++      if (impl->type != BQ_NONE)
++              return impl;
+ 
+       if (config == NULL)
+               goto error;
+-- 
+GitLab

diff --git a/media-video/pipewire/pipewire-0.3.69.ebuild 
b/media-video/pipewire/pipewire-0.3.69-r1.ebuild
similarity index 100%
rename from media-video/pipewire/pipewire-0.3.69.ebuild
rename to media-video/pipewire/pipewire-0.3.69-r1.ebuild

Reply via email to