Skip to content
Snippets Groups Projects
Commit ce880e7a authored by Apertis CI robot's avatar Apertis CI robot Committed by aiy2kor
Browse files

Release wireplumber version 0.4.7-1+apertis1

parent 1f57ee1d
No related branches found
No related tags found
4 merge requests!19Backport update from apertis/v2023dev1 → apertis/v2022,!18Draft: Backport update from apertis/v2023dev1 → apertis/v2022,!16Draft: Backport update from apertis/v2023dev1 → apertis/v2022,!15Update from debian/bookworm for apertis/v2023dev1
Pipeline #340805 failed
Pipeline: wireplumber

#340806

    wireplumber (0.4.7-1+apertis1) apertis; urgency=medium
    * Sync updates from Debian bookworm
    * Drop patches included in upstream release:
    - 0001-si-audio-adapter-clean-up-unneeded-code-when-setting.patch
    - 0002-si-audio-adapter-always-return-task-error-if-set-por.patch
    - 0003-si-standard-link-always-return-transition-error-if-a.patch
    * Drop patch not needed anymore:
    - 0004-si-standard-link-handle-proxy-destroyed-signal-when-.patch
    * Remaining Apertis delta:
    - Install AppArmor rules
    -- Apertis CI <devel@lists.apertis.org> Tue, 18 Jan 2022 07:51:24 +0000
    wireplumber (0.4.7-1) unstable; urgency=medium
    * Team upload.
    ......
    From 9a1f4848d969bfa5691ff100cd26a3032495c50c Mon Sep 17 00:00:00 2001
    From: Julian Bouzas <julian.bouzas@collabora.com>
    Date: Thu, 18 Nov 2021 11:38:04 -0500
    Subject: [PATCH 1/4] si-audio-adapter: clean up unneeded code when setting
    ports format
    Content-Type: text/plain; charset="utf-8"
    Content-Transfer-Encoding: 8bit
    ---
    modules/module-si-audio-adapter.c | 2 --
    1 file changed, 2 deletions(-)
    diff --git a/modules/module-si-audio-adapter.c b/modules/module-si-audio-adapter.c
    index 0087024..c1982b0 100644
    --- a/modules/module-si-audio-adapter.c
    +++ b/modules/module-si-audio-adapter.c
    @@ -591,11 +591,9 @@ si_audio_adapter_set_ports_format (WpSiAdapter * item, WpSpaPod *f,
    const gchar *mode, GAsyncReadyCallback callback, gpointer data)
    {
    WpSiAudioAdapter *self = WP_SI_AUDIO_ADAPTER (item);
    - g_autoptr (WpCore) core = wp_object_get_core (WP_OBJECT (self));
    g_autoptr (WpSpaPod) format = f;
    guint32 active = 0;
    - g_return_if_fail (core);
    /* cancel previous task if any */
    if (self->format_task) {
    --
    2.25.1
    From ae729e38046db1c35a33fa4fd546a4beab9f5353 Mon Sep 17 00:00:00 2001
    From: Julian Bouzas <julian.bouzas@collabora.com>
    Date: Thu, 18 Nov 2021 11:58:18 -0500
    Subject: [PATCH 2/4] si-audio-adapter: always return task error if set ports
    format fails
    Content-Type: text/plain; charset="utf-8"
    Content-Transfer-Encoding: 8bit
    Avoids having the session item in an invalid state.
    ---
    modules/module-si-audio-adapter.c | 31 ++++++++++++++++---------------
    1 file changed, 16 insertions(+), 15 deletions(-)
    diff --git a/modules/module-si-audio-adapter.c b/modules/module-si-audio-adapter.c
    index c1982b0..23fb859 100644
    --- a/modules/module-si-audio-adapter.c
    +++ b/modules/module-si-audio-adapter.c
    @@ -592,9 +592,9 @@ si_audio_adapter_set_ports_format (WpSiAdapter * item, WpSpaPod *f,
    {
    WpSiAudioAdapter *self = WP_SI_AUDIO_ADAPTER (item);
    g_autoptr (WpSpaPod) format = f;
    + g_autoptr (GTask) task = g_task_new (self, NULL, callback, data);
    guint32 active = 0;
    -
    /* cancel previous task if any */
    if (self->format_task) {
    g_autoptr (GTask) t = g_steal_pointer (&self->format_task);
    @@ -605,17 +605,18 @@ si_audio_adapter_set_ports_format (WpSiAdapter * item, WpSpaPod *f,
    /* build default format if NULL was given */
    if (!format && !g_strcmp0 (mode, "dsp")) {
    format = build_adapter_default_format (self, mode);
    - g_return_if_fail (format);
    + if (!format) {
    + g_task_return_new_error (task, WP_DOMAIN_LIBRARY,
    + WP_LIBRARY_ERROR_OPERATION_FAILED,
    + "failed to build default format, aborting set format operation");
    + return;
    + }
    }
    - /* create the new task */
    - g_return_if_fail (!self->format_task);
    - self->format_task = g_task_new (self, NULL, callback, data);
    -
    + /* make sure the node has WP_NODE_FEATURE_PORTS */
    active = wp_object_get_active_features (WP_OBJECT (self->node));
    if (G_UNLIKELY (!(active & WP_NODE_FEATURE_PORTS))) {
    - g_autoptr (GTask) t = g_steal_pointer (&self->format_task);
    - g_task_return_new_error (t, WP_DOMAIN_LIBRARY,
    + g_task_return_new_error (task, WP_DOMAIN_LIBRARY,
    WP_LIBRARY_ERROR_OPERATION_FAILED,
    "node feature ports is not enabled, aborting set format operation");
    return;
    @@ -625,20 +626,20 @@ si_audio_adapter_set_ports_format (WpSiAdapter * item, WpSpaPod *f,
    if (!g_strcmp0 (mode, self->mode) &&
    ((format == NULL && self->format == NULL) ||
    wp_spa_pod_equal (format, self->format))) {
    - g_autoptr (GTask) t = g_steal_pointer (&self->format_task);
    - g_task_return_boolean (t, TRUE);
    + g_task_return_boolean (task, TRUE);
    return;
    }
    - /* set format and mode */
    - g_clear_pointer (&self->format, wp_spa_pod_unref);
    - self->format = g_steal_pointer (&format);
    - strncpy (self->mode, mode ? mode : "dsp", sizeof (self->mode) - 1);
    -
    /* ensure the node is suspended */
    if (wp_node_get_state (self->node, NULL) >= WP_NODE_STATE_IDLE)
    wp_node_send_command (self->node, "Suspend");
    + /* set task, format and mode */
    + self->format_task = g_steal_pointer (&task);
    + g_clear_pointer (&self->format, wp_spa_pod_unref);
    + self->format = g_steal_pointer (&format);
    + strncpy (self->mode, mode ? mode : "dsp", sizeof (self->mode) - 1);
    +
    /* configure DSP with chosen format */
    wp_pipewire_object_set_param (WP_PIPEWIRE_OBJECT (self->node),
    "PortConfig", 0, wp_spa_pod_new_object (
    --
    2.25.1
    From 103ee33e388f64454f17f08d42401a8eaf55b6b9 Mon Sep 17 00:00:00 2001
    From: Julian Bouzas <julian.bouzas@collabora.com>
    Date: Thu, 18 Nov 2021 11:58:34 -0500
    Subject: [PATCH 3/4] si-standard-link: always return transition error if
    activation fails
    Content-Type: text/plain; charset="utf-8"
    Content-Transfer-Encoding: 8bit
    Avoids having the session item in an invalid state.
    ---
    modules/module-si-standard-link.c | 26 +++++++++++++++++++-------
    1 file changed, 19 insertions(+), 7 deletions(-)
    diff --git a/modules/module-si-standard-link.c b/modules/module-si-standard-link.c
    index 95ec7ca..1a23195 100644
    --- a/modules/module-si-standard-link.c
    +++ b/modules/module-si-standard-link.c
    @@ -329,9 +329,12 @@ get_ports_and_create_links (WpSiStandardLink *self, WpTransition *transition)
    si_out = WP_SI_LINKABLE (g_weak_ref_get (&self->out_item));
    si_in = WP_SI_LINKABLE (g_weak_ref_get (&self->in_item));
    -
    - g_return_if_fail (si_out);
    - g_return_if_fail (si_in);
    + if (!si_out || !si_in) {
    + wp_transition_return_error (transition, g_error_new (WP_DOMAIN_LIBRARY,
    + WP_LIBRARY_ERROR_INVARIANT,
    + "Failed to create links because one of the nodes was destroyed"));
    + return;
    + }
    out_ports = wp_si_linkable_get_ports (si_out, self->out_item_port_context);
    in_ports = wp_si_linkable_get_ports (si_in, self->in_item_port_context);
    @@ -444,15 +447,24 @@ on_main_adapter_ready (GObject *obj, GAsyncResult * res, gpointer p)
    static void
    configure_and_link_adapters (WpSiStandardLink *self, WpTransition *transition)
    {
    + g_autoptr (WpSiAdapter) si_out =
    + WP_SI_ADAPTER (g_weak_ref_get (&self->out_item));
    + g_autoptr (WpSiAdapter) si_in =
    + WP_SI_ADAPTER (g_weak_ref_get (&self->in_item));
    struct adapter *out, *in, *main, *other;
    const gchar *str = NULL;
    + if (!si_out || !si_in) {
    + wp_transition_return_error (transition, g_error_new (WP_DOMAIN_LIBRARY,
    + WP_LIBRARY_ERROR_INVARIANT,
    + "Failed to create links because one of the adapters was destroyed"));
    + return;
    + }
    +
    out = g_slice_new0 (struct adapter);
    in = g_slice_new0 (struct adapter);
    - out->si = WP_SI_ADAPTER (g_weak_ref_get (&self->out_item));
    - in->si = WP_SI_ADAPTER (g_weak_ref_get (&self->in_item));
    - g_return_if_fail (out->si);
    - g_return_if_fail (in->si);
    + out->si = g_steal_pointer (&si_out);
    + in->si = g_steal_pointer (&si_in);
    str = wp_session_item_get_property (WP_SESSION_ITEM (out->si), "item.node.type");
    out->is_device = !g_strcmp0 (str, "device");
    --
    2.25.1
    From 890d1bc12c7ec1a4c7a04452cb2524e14cd72d71 Mon Sep 17 00:00:00 2001
    From: Julian Bouzas <julian.bouzas@collabora.com>
    Date: Fri, 19 Nov 2021 10:06:26 -0500
    Subject: [PATCH 4/4] si-standard-link: handle proxy destroyed signal when
    creating links
    Content-Type: text/plain; charset="utf-8"
    Content-Transfer-Encoding: 8bit
    ---
    modules/module-si-standard-link.c | 20 ++++++++++++++++++++
    1 file changed, 20 insertions(+)
    diff --git a/modules/module-si-standard-link.c b/modules/module-si-standard-link.c
    index 1a23195..6bade78 100644
    --- a/modules/module-si-standard-link.c
    +++ b/modules/module-si-standard-link.c
    @@ -221,6 +221,24 @@ score_ports(struct port *out, struct port *in)
    return score;
    }
    +static void
    +on_link_destroyed (WpProxy * proxy, WpTransition * transition)
    +{
    + WpSiStandardLink *self = wp_transition_get_source_object (transition);
    + WpLink *link = WP_LINK (proxy);
    +
    + wp_object_deactivate (WP_OBJECT (link), WP_OBJECT_FEATURES_ALL);
    + g_ptr_array_remove_fast (self->node_links, link);
    +
    + self->n_async_ops_wait--;
    + if (self->n_async_ops_wait == 0) {
    + g_clear_pointer (&self->node_links, g_ptr_array_unref);
    + wp_transition_return_error (transition, g_error_new (WP_DOMAIN_LIBRARY,
    + WP_LIBRARY_ERROR_INVARIANT,
    + "PipeWire links destroyed before finishing their activation"));
    + }
    +}
    +
    static gboolean
    create_links (WpSiStandardLink * self, WpTransition * transition,
    GVariant * out_ports, GVariant * in_ports)
    @@ -306,6 +324,8 @@ create_links (WpSiStandardLink * self, WpTransition * transition,
    /* create the link */
    link = wp_link_new_from_factory (core, "link-factory", props);
    + g_signal_connect_object (link, "pw-proxy-destroyed",
    + G_CALLBACK (on_link_destroyed), transition, 0);
    g_ptr_array_add (self->node_links, link);
    /* activate to ensure it is created without errors */
    --
    2.25.1
    0001-si-audio-adapter-clean-up-unneeded-code-when-setting.patch
    0002-si-audio-adapter-always-return-task-error-if-set-por.patch
    0003-si-standard-link-always-return-transition-error-if-a.patch
    0004-si-standard-link-handle-proxy-destroyed-signal-when-.patch
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Finish editing this message first!
    Please register or to comment