Accepting request 824808 from GNOME:Factory
(forwarded request 824635 from dimstar) OBS-URL: https://build.opensuse.org/request/show/824808 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/pipewire?expand=0&rev=13
This commit is contained in:
parent
924112441d
commit
1656d7b87f
@ -1,79 +0,0 @@
|
||||
From 61c1fe546e374db03f3b05749123cf9739b966f2 Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
Date: Mon, 15 Jun 2020 20:44:08 +0200
|
||||
Subject: [PATCH] client-node: fix buffer size calculation
|
||||
|
||||
Calculate the size of the buffer as the difference between the first
|
||||
byte and the last byte. This takes into account the alignment.
|
||||
---
|
||||
src/modules/module-client-node/client-node.c | 13 ++++++-------
|
||||
src/modules/module-client-node/remote-node.c | 6 +++---
|
||||
2 files changed, 9 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/src/modules/module-client-node/client-node.c b/src/modules/module-client-node/client-node.c
|
||||
index 43bd8570..09980bd1 100644
|
||||
--- a/src/modules/module-client-node/client-node.c
|
||||
+++ b/src/modules/module-client-node/client-node.c
|
||||
@@ -769,8 +769,7 @@ do_port_use_buffers(struct impl *impl,
|
||||
for (i = 0; i < n_buffers; i++) {
|
||||
struct buffer *b = &mix->buffers[i];
|
||||
struct pw_memblock *mem, *m;
|
||||
- size_t data_size;
|
||||
- void *baseptr;
|
||||
+ void *baseptr, *endptr;
|
||||
|
||||
b->outbuf = buffers[i];
|
||||
memcpy(&b->buffer, buffers[i], sizeof(struct spa_buffer));
|
||||
@@ -787,14 +786,14 @@ do_port_use_buffers(struct impl *impl,
|
||||
if ((mem = pw_mempool_find_ptr(impl->context->pool, baseptr)) == NULL)
|
||||
return -EINVAL;
|
||||
|
||||
- data_size = buffers[i]->n_datas * sizeof(struct spa_chunk);
|
||||
+ endptr = SPA_MEMBER(baseptr, buffers[i]->n_datas * sizeof(struct spa_chunk), void);
|
||||
for (j = 0; j < buffers[i]->n_metas; j++) {
|
||||
- data_size += SPA_ROUND_UP_N(buffers[i]->metas[j].size, 8);
|
||||
+ endptr = SPA_MEMBER(endptr, SPA_ROUND_UP_N(buffers[i]->metas[j].size, 8), void);
|
||||
}
|
||||
for (j = 0; j < buffers[i]->n_datas; j++) {
|
||||
struct spa_data *d = buffers[i]->datas;
|
||||
if (d->type == SPA_DATA_MemPtr)
|
||||
- data_size += d->maxsize;
|
||||
+ endptr = SPA_MEMBER(d->data, d->maxsize, void);
|
||||
}
|
||||
|
||||
m = pw_mempool_import_block(this->client->pool, mem);
|
||||
@@ -805,8 +804,8 @@ do_port_use_buffers(struct impl *impl,
|
||||
|
||||
mb[i].buffer = &b->buffer;
|
||||
mb[i].mem_id = m->id;
|
||||
- mb[i].offset = SPA_PTRDIFF(baseptr, SPA_MEMBER(mem->map->ptr, 0, void));
|
||||
- mb[i].size = data_size;
|
||||
+ mb[i].offset = SPA_PTRDIFF(baseptr, mem->map->ptr);
|
||||
+ mb[i].size = SPA_PTRDIFF(endptr, baseptr);
|
||||
spa_log_debug(this->log, NAME" %p: buffer %d %d %d %d", this, i, mb[i].mem_id,
|
||||
mb[i].offset, mb[i].size);
|
||||
|
||||
diff --git a/src/modules/module-client-node/remote-node.c b/src/modules/module-client-node/remote-node.c
|
||||
index a68e7507..8ab1bac3 100644
|
||||
--- a/src/modules/module-client-node/remote-node.c
|
||||
+++ b/src/modules/module-client-node/remote-node.c
|
||||
@@ -653,7 +653,7 @@ client_node_port_use_buffers(void *object,
|
||||
b->datas = SPA_MEMBER(b->metas, sizeof(struct spa_meta) * b->n_metas,
|
||||
struct spa_data);
|
||||
|
||||
- pw_log_debug("add buffer %d %d %u %u %p", mm->block->id,
|
||||
+ pw_log_debug("add buffer mem:%d id:%d offset:%u size:%u %p", mm->block->id,
|
||||
bid->id, buffers[i].offset, buffers[i].size, bid->buf);
|
||||
|
||||
offset = 0;
|
||||
@@ -696,8 +696,8 @@ client_node_port_use_buffers(void *object,
|
||||
int offs = SPA_PTR_TO_INT(d->data);
|
||||
d->data = SPA_MEMBER(mm->ptr, offs, void);
|
||||
d->fd = -1;
|
||||
- pw_log_debug(" data %d %u -> mem %p maxsize %d",
|
||||
- j, bid->id, d->data, d->maxsize);
|
||||
+ pw_log_debug(" data %d id:%u -> mem:%p offs:%d maxsize:%d",
|
||||
+ j, bid->id, d->data, offs, d->maxsize);
|
||||
} else {
|
||||
pw_log_warn("unknown buffer data type %d", d->type);
|
||||
}
|
@ -1,73 +0,0 @@
|
||||
From cd7a56a71c76e6a4d4158bf739fd61644d325584 Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
Date: Tue, 16 Jun 2020 11:02:16 +0200
|
||||
Subject: [PATCH] gst: fix proxy leaks
|
||||
|
||||
---
|
||||
src/gst/gstpipewiredeviceprovider.c | 22 +++++++++++++++++++++-
|
||||
1 file changed, 21 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/gst/gstpipewiredeviceprovider.c b/src/gst/gstpipewiredeviceprovider.c
|
||||
index e0b8d855..ca7f7306 100644
|
||||
--- a/src/gst/gstpipewiredeviceprovider.c
|
||||
+++ b/src/gst/gstpipewiredeviceprovider.c
|
||||
@@ -404,6 +404,13 @@ static const struct pw_node_events node_events = {
|
||||
.info = node_event_info
|
||||
};
|
||||
|
||||
+static void
|
||||
+removed_node (void *data)
|
||||
+{
|
||||
+ struct node_data *nd = data;
|
||||
+ pw_proxy_destroy((struct pw_proxy*)nd->proxy);
|
||||
+}
|
||||
+
|
||||
static void
|
||||
destroy_node (void *data)
|
||||
{
|
||||
@@ -428,9 +435,17 @@ destroy_node (void *data)
|
||||
|
||||
static const struct pw_proxy_events proxy_node_events = {
|
||||
PW_VERSION_PROXY_EVENTS,
|
||||
+ .removed = removed_node,
|
||||
.destroy = destroy_node,
|
||||
};
|
||||
|
||||
+static void
|
||||
+removed_port (void *data)
|
||||
+{
|
||||
+ struct port_data *pd = data;
|
||||
+ pw_proxy_destroy((struct pw_proxy*)pd->proxy);
|
||||
+}
|
||||
+
|
||||
static void
|
||||
destroy_port (void *data)
|
||||
{
|
||||
@@ -442,6 +457,7 @@ destroy_port (void *data)
|
||||
|
||||
static const struct pw_proxy_events proxy_port_events = {
|
||||
PW_VERSION_PROXY_EVENTS,
|
||||
+ .removed = removed_port,
|
||||
.destroy = destroy_port,
|
||||
};
|
||||
|
||||
@@ -563,6 +579,7 @@ gst_pipewire_device_provider_probe (GstDeviceProvider * provider)
|
||||
}
|
||||
|
||||
GST_DEBUG_OBJECT (self, "disconnect");
|
||||
+ pw_proxy_destroy ((struct pw_proxy*)data->registry);
|
||||
pw_core_disconnect (self->core);
|
||||
pw_context_destroy (c);
|
||||
pw_loop_destroy (l);
|
||||
@@ -654,7 +671,10 @@ gst_pipewire_device_provider_stop (GstDeviceProvider * provider)
|
||||
GstPipeWireDeviceProvider *self = GST_PIPEWIRE_DEVICE_PROVIDER (provider);
|
||||
|
||||
GST_DEBUG_OBJECT (self, "stopping provider");
|
||||
-
|
||||
+ if (self->registry) {
|
||||
+ pw_proxy_destroy ((struct pw_proxy*)self->registry);
|
||||
+ self->registry = NULL;
|
||||
+ }
|
||||
if (self->core) {
|
||||
pw_core_disconnect (self->core);
|
||||
self->core = NULL;
|
@ -1,39 +0,0 @@
|
||||
From 9c8279aa6e45398b745e99b889963a36bdbe7ebe Mon Sep 17 00:00:00 2001
|
||||
From: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
||||
Date: Wed, 17 Jun 2020 17:17:51 +0300
|
||||
Subject: [PATCH] pulse: fix pa_card_info.profiles2 array to be NULL terminated
|
||||
|
||||
profiles2 is meant to be NULL terminated, according to its documentation
|
||||
Fixes a crash in pavucontrol-qt
|
||||
---
|
||||
pipewire-pulseaudio/src/introspect.c | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/pipewire-pulseaudio/src/introspect.c b/pipewire-pulseaudio/src/introspect.c
|
||||
index 526ddda8..5b2a7a1c 100644
|
||||
--- a/pipewire-pulseaudio/src/introspect.c
|
||||
+++ b/pipewire-pulseaudio/src/introspect.c
|
||||
@@ -1239,13 +1239,13 @@ static void card_callback(struct card_data *d)
|
||||
{
|
||||
struct global *g = d->global;
|
||||
pa_card_info *i = &g->card_info.info;
|
||||
- int n_profiles, j;
|
||||
+ int n_profiles, j = 0;
|
||||
struct param *p;
|
||||
|
||||
n_profiles = g->card_info.n_profiles;
|
||||
|
||||
i->profiles = alloca(sizeof(pa_card_profile_info) * n_profiles);
|
||||
- i->profiles2 = alloca(sizeof(pa_card_profile_info2 *) * n_profiles);
|
||||
+ i->profiles2 = alloca(sizeof(pa_card_profile_info2 *) * n_profiles + 1);
|
||||
i->n_profiles = 0;
|
||||
|
||||
pw_log_debug("context %p: info for %d", g->context, g->id);
|
||||
@@ -1282,6 +1282,7 @@ static void card_callback(struct card_data *d)
|
||||
i->active_profile2 = i->profiles2[j];
|
||||
}
|
||||
}
|
||||
+ i->profiles2[j] = NULL;
|
||||
d->cb(d->context, i, 0, d->userdata);
|
||||
}
|
||||
|
@ -1,22 +0,0 @@
|
||||
From ba57de9b81cb9841b7183f57f300112458f5ee73 Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
Date: Wed, 17 Jun 2020 16:56:40 +0200
|
||||
Subject: [PATCH] pulse: fix size calculation
|
||||
|
||||
---
|
||||
pipewire-pulseaudio/src/introspect.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/pipewire-pulseaudio/src/introspect.c b/pipewire-pulseaudio/src/introspect.c
|
||||
index 5b2a7a1c..f0512ead 100644
|
||||
--- a/pipewire-pulseaudio/src/introspect.c
|
||||
+++ b/pipewire-pulseaudio/src/introspect.c
|
||||
@@ -1245,7 +1245,7 @@ static void card_callback(struct card_data *d)
|
||||
n_profiles = g->card_info.n_profiles;
|
||||
|
||||
i->profiles = alloca(sizeof(pa_card_profile_info) * n_profiles);
|
||||
- i->profiles2 = alloca(sizeof(pa_card_profile_info2 *) * n_profiles + 1);
|
||||
+ i->profiles2 = alloca(sizeof(pa_card_profile_info2 *) * (n_profiles + 1));
|
||||
i->n_profiles = 0;
|
||||
|
||||
pw_log_debug("context %p: info for %d", g->context, g->id);
|
@ -1,22 +0,0 @@
|
||||
From a108752514dafa5c6555050991406decc9bff5f2 Mon Sep 17 00:00:00 2001
|
||||
From: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
||||
Date: Wed, 17 Jun 2020 14:28:42 +0300
|
||||
Subject: [PATCH] jack: fix crash on close when metadata are not available
|
||||
|
||||
---
|
||||
pipewire-jack/src/pipewire-jack.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/pipewire-jack/src/pipewire-jack.c b/pipewire-jack/src/pipewire-jack.c
|
||||
index 28a8ff82..5d4ee7b7 100644
|
||||
--- a/pipewire-jack/src/pipewire-jack.c
|
||||
+++ b/pipewire-jack/src/pipewire-jack.c
|
||||
@@ -2400,7 +2400,7 @@ int jack_client_close (jack_client_t *client)
|
||||
|
||||
if (c->registry)
|
||||
pw_proxy_destroy((struct pw_proxy*)c->registry);
|
||||
- if (c->metadata->proxy)
|
||||
+ if (c->metadata && c->metadata->proxy)
|
||||
pw_proxy_destroy((struct pw_proxy*)c->metadata->proxy);
|
||||
pw_core_disconnect(c->core);
|
||||
pw_context_destroy(c->context.context);
|
@ -1,25 +0,0 @@
|
||||
From 1f1386879b8dd3d3be9a54f749bb839ae2281223 Mon Sep 17 00:00:00 2001
|
||||
From: Julian Bouzas <julian.bouzas@collabora.com>
|
||||
Date: Wed, 17 Jun 2020 13:36:05 -0400
|
||||
Subject: [PATCH] a2dpsink: only request new data when buffer is done
|
||||
|
||||
---
|
||||
spa/plugins/bluez5/a2dp-sink.c | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/spa/plugins/bluez5/a2dp-sink.c b/spa/plugins/bluez5/a2dp-sink.c
|
||||
index 2ef5317f..575234f2 100644
|
||||
--- a/spa/plugins/bluez5/a2dp-sink.c
|
||||
+++ b/spa/plugins/bluez5/a2dp-sink.c
|
||||
@@ -563,7 +563,10 @@ static int flush_data(struct impl *this, uint64_t now_time)
|
||||
if (written > 0 && l1 > 0)
|
||||
written += add_data(this, src, l1);
|
||||
if (written <= 0) {
|
||||
- port->need_data = true;
|
||||
+ /* only request new data when the current buffer will be fully processed in the next iteration */
|
||||
+ if (port->ready_offset + (this->frame_count * this->codesize) >= d[0].chunk->size)
|
||||
+ port->need_data = true;
|
||||
+
|
||||
if (written < 0 && written != -ENOSPC) {
|
||||
spa_list_remove(&b->link);
|
||||
b->outstanding = true;
|
@ -1,29 +0,0 @@
|
||||
From 715be5dfe779e73139904461b5e3da53e030ead6 Mon Sep 17 00:00:00 2001
|
||||
From: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
||||
Date: Wed, 17 Jun 2020 18:01:17 +0300
|
||||
Subject: [PATCH] pulse: fix counter while populating card_info profiles
|
||||
|
||||
---
|
||||
pipewire-pulseaudio/src/introspect.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/pipewire-pulseaudio/src/introspect.c b/pipewire-pulseaudio/src/introspect.c
|
||||
index f0512ead..67f1bd54 100644
|
||||
--- a/pipewire-pulseaudio/src/introspect.c
|
||||
+++ b/pipewire-pulseaudio/src/introspect.c
|
||||
@@ -1262,7 +1262,6 @@ static void card_callback(struct card_data *d)
|
||||
continue;
|
||||
}
|
||||
|
||||
- j = i->n_profiles++;
|
||||
i->profiles[j].name = name;
|
||||
i->profiles[j].description = name;
|
||||
i->profiles[j].n_sinks = 1;
|
||||
@@ -1281,6 +1280,7 @@ static void card_callback(struct card_data *d)
|
||||
i->active_profile = &i->profiles[j];
|
||||
i->active_profile2 = i->profiles2[j];
|
||||
}
|
||||
+ j = ++i->n_profiles;
|
||||
}
|
||||
i->profiles2[j] = NULL;
|
||||
d->cb(d->context, i, 0, d->userdata);
|
@ -1,26 +0,0 @@
|
||||
From ebede9123918ca01a6004fb28a4a8b6c24f4732e Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
Date: Fri, 19 Jun 2020 12:12:48 +0200
|
||||
Subject: [PATCH] impl-link: reset state before starting allocation
|
||||
|
||||
Reset our state before checking the state of the ports or else
|
||||
we might still think a port has buffers while they are being
|
||||
allocated.
|
||||
---
|
||||
src/pipewire/impl-link.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/src/pipewire/impl-link.c b/src/pipewire/impl-link.c
|
||||
index aeda03f8..c0095f0a 100644
|
||||
--- a/src/pipewire/impl-link.c
|
||||
+++ b/src/pipewire/impl-link.c
|
||||
@@ -411,6 +411,9 @@ static int do_allocation(struct pw_impl_link *this)
|
||||
pw_log_debug(NAME" %p: out-node:%p in-node:%p: out-flags:%08x in-flags:%08x",
|
||||
this, output->node, input->node, out_flags, in_flags);
|
||||
|
||||
+ this->rt.in_mix.have_buffers = false;
|
||||
+ this->rt.out_mix.have_buffers = false;
|
||||
+
|
||||
if (out_flags & SPA_PORT_FLAG_LIVE) {
|
||||
pw_log_debug(NAME" %p: setting link as live", this);
|
||||
output->node->live = true;
|
@ -1,24 +0,0 @@
|
||||
From f78e44c28ac1767ee1ae916b0d4bb8f2d19dd2d6 Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
Date: Fri, 19 Jun 2020 15:20:50 +0200
|
||||
Subject: [PATCH] impl-core: clear the mempool
|
||||
|
||||
When a client sends hello, clear the mempool again to make sure
|
||||
it get's the new memory.
|
||||
---
|
||||
src/pipewire/impl-core.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/src/pipewire/impl-core.c b/src/pipewire/impl-core.c
|
||||
index e1b494e4..103c2863 100644
|
||||
--- a/src/pipewire/impl-core.c
|
||||
+++ b/src/pipewire/impl-core.c
|
||||
@@ -162,6 +162,8 @@ static int core_hello(void *object, uint32_t version)
|
||||
pw_log_debug(NAME" %p: hello %d from resource %p", context, version, resource);
|
||||
pw_map_for_each(&client->objects, destroy_resource, client);
|
||||
|
||||
+ pw_mempool_clear(client->pool);
|
||||
+
|
||||
this->info.change_mask = PW_CORE_CHANGE_MASK_ALL;
|
||||
pw_core_resource_info(resource, &this->info);
|
||||
|
@ -1,22 +0,0 @@
|
||||
From 95192b21f152ba6fa769049a2298aba1221f794d Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
Date: Fri, 19 Jun 2020 16:58:22 +0200
|
||||
Subject: [PATCH] mem: reset the map in clear
|
||||
|
||||
Or else the free list is not cleared.
|
||||
---
|
||||
src/pipewire/mem.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/src/pipewire/mem.c b/src/pipewire/mem.c
|
||||
index 79d94672..94b62049 100644
|
||||
--- a/src/pipewire/mem.c
|
||||
+++ b/src/pipewire/mem.c
|
||||
@@ -164,6 +164,7 @@ void pw_mempool_clear(struct pw_mempool *pool)
|
||||
|
||||
spa_list_consume(b, &impl->blocks, link)
|
||||
pw_memblock_free(&b->this);
|
||||
+ pw_map_reset(&impl->map);
|
||||
}
|
||||
|
||||
void pw_mempool_destroy(struct pw_mempool *pool)
|
@ -1,63 +0,0 @@
|
||||
From f08c35259c3d87adaeb9fa09c1c471d7357cec86 Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
Date: Tue, 23 Jun 2020 15:25:27 +0200
|
||||
Subject: [PATCH] avoid uninitialized variables
|
||||
|
||||
---
|
||||
spa/examples/adapter-control.c | 6 +++---
|
||||
src/tools/pw-profiler.c | 13 ++++++-------
|
||||
2 files changed, 9 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/spa/examples/adapter-control.c b/spa/examples/adapter-control.c
|
||||
index 8a3daf59..499d4d60 100644
|
||||
--- a/spa/examples/adapter-control.c
|
||||
+++ b/spa/examples/adapter-control.c
|
||||
@@ -490,10 +490,10 @@ static int negotiate_formats(struct data *data)
|
||||
if (spa_node_port_enum_params_sync(data->source_follower_node,
|
||||
SPA_DIRECTION_OUTPUT, 0,
|
||||
SPA_PARAM_Buffers, &state, filter, ¶m, &b) != 1)
|
||||
- return res;
|
||||
+ return -ENOTSUP;
|
||||
spa_pod_fixate(param);
|
||||
- if (spa_pod_parse_object(param, SPA_TYPE_OBJECT_ParamBuffers, NULL,
|
||||
- SPA_PARAM_BUFFERS_size, SPA_POD_Int(&buffer_size)) < 0)
|
||||
+ if ((res = spa_pod_parse_object(param, SPA_TYPE_OBJECT_ParamBuffers, NULL,
|
||||
+ SPA_PARAM_BUFFERS_size, SPA_POD_Int(&buffer_size))) < 0)
|
||||
return res;
|
||||
|
||||
/* set the sink and source formats */
|
||||
diff --git a/src/tools/pw-profiler.c b/src/tools/pw-profiler.c
|
||||
index e0a7492a..5cc09ca3 100644
|
||||
--- a/src/tools/pw-profiler.c
|
||||
+++ b/src/tools/pw-profiler.c
|
||||
@@ -114,15 +114,14 @@ static int process_clock(struct data *d, const struct spa_pod *pod, struct point
|
||||
|
||||
static int process_driver_block(struct data *d, const struct spa_pod *pod, struct point *point)
|
||||
{
|
||||
- union {
|
||||
- char *s;
|
||||
- } dummy;
|
||||
- uint32_t driver_id;
|
||||
+ char *name = NULL;
|
||||
+ uint32_t driver_id = 0;
|
||||
struct measurement driver;
|
||||
|
||||
+ spa_zero(driver);
|
||||
spa_pod_parse_struct(pod,
|
||||
SPA_POD_Int(&driver_id),
|
||||
- SPA_POD_String(&dummy.s),
|
||||
+ SPA_POD_String(&name),
|
||||
SPA_POD_Long(&driver.prev_signal),
|
||||
SPA_POD_Long(&driver.signal),
|
||||
SPA_POD_Long(&driver.awake),
|
||||
@@ -169,8 +168,8 @@ static int add_follower(struct data *d, uint32_t id, const char *name)
|
||||
|
||||
static int process_follower_block(struct data *d, const struct spa_pod *pod, struct point *point)
|
||||
{
|
||||
- uint32_t id;
|
||||
- const char *name;
|
||||
+ uint32_t id = 0;
|
||||
+ const char *name = NULL;
|
||||
struct measurement m;
|
||||
int idx;
|
||||
|
@ -1,55 +0,0 @@
|
||||
From 35bb7d794bf975e82d04bdd0d3f3c7907a679ce6 Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
Date: Tue, 23 Jun 2020 15:25:45 +0200
|
||||
Subject: [PATCH] dlclose on errors
|
||||
|
||||
---
|
||||
spa/plugins/audioconvert/test-helper.h | 21 +++++++++++++--------
|
||||
1 file changed, 13 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/spa/plugins/audioconvert/test-helper.h b/spa/plugins/audioconvert/test-helper.h
|
||||
index 8f7b7206..d95317b4 100644
|
||||
--- a/spa/plugins/audioconvert/test-helper.h
|
||||
+++ b/spa/plugins/audioconvert/test-helper.h
|
||||
@@ -46,28 +46,33 @@ static inline struct spa_handle *load_handle(const struct spa_support *support,
|
||||
|
||||
if ((hnd = dlopen(path, RTLD_NOW)) == NULL) {
|
||||
fprintf(stderr, "can't load %s: %s\n", lib, dlerror());
|
||||
- errno = -ENOENT;
|
||||
- return NULL;
|
||||
+ res = -ENOENT;
|
||||
+ goto error;
|
||||
}
|
||||
if ((enum_func = dlsym(hnd, SPA_HANDLE_FACTORY_ENUM_FUNC_NAME)) == NULL) {
|
||||
fprintf(stderr, "can't find enum function\n");
|
||||
- errno = -ENOENT;
|
||||
- return NULL;
|
||||
+ res = -ENXIO;
|
||||
+ goto error_close;
|
||||
}
|
||||
|
||||
if ((factory = get_factory(enum_func, name, SPA_VERSION_HANDLE_FACTORY)) == NULL) {
|
||||
fprintf(stderr, "can't find factory\n");
|
||||
- errno = -ENOENT;
|
||||
- return NULL;
|
||||
+ res = -ENOENT;
|
||||
+ goto error_close;
|
||||
}
|
||||
handle = calloc(1, spa_handle_factory_get_size(factory, NULL));
|
||||
if ((res = spa_handle_factory_init(factory, handle,
|
||||
NULL, support, n_support)) < 0) {
|
||||
fprintf(stderr, "can't make factory instance: %d\n", res);
|
||||
- errno = -res;
|
||||
- return NULL;
|
||||
+ goto error_close;
|
||||
}
|
||||
return handle;
|
||||
+
|
||||
+error_close:
|
||||
+ dlclose(hnd);
|
||||
+error:
|
||||
+ errno = -res;
|
||||
+ return NULL;
|
||||
}
|
||||
|
||||
static inline uint32_t get_cpu_flags(void)
|
@ -1,22 +0,0 @@
|
||||
From d5604990545012a2318eebdc38d569bbc5773a38 Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
Date: Wed, 24 Jun 2020 12:50:42 +0200
|
||||
Subject: [PATCH] stream: handle NULL context
|
||||
|
||||
---
|
||||
pipewire-pulseaudio/src/stream.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/pipewire-pulseaudio/src/stream.c b/pipewire-pulseaudio/src/stream.c
|
||||
index bcb338bf..1c1ce5f7 100644
|
||||
--- a/pipewire-pulseaudio/src/stream.c
|
||||
+++ b/pipewire-pulseaudio/src/stream.c
|
||||
@@ -212,7 +212,7 @@ static void stream_state_changed(void *data, enum pw_stream_state old,
|
||||
pw_log_debug("stream %p: state '%s'->'%s' (%d)", s, pw_stream_state_as_string(old),
|
||||
pw_stream_state_as_string(state), s->state);
|
||||
|
||||
- if (s->state == PA_STREAM_TERMINATED)
|
||||
+ if (s->state == PA_STREAM_TERMINATED || c == NULL)
|
||||
return;
|
||||
|
||||
switch(state) {
|
@ -1,103 +0,0 @@
|
||||
From f678f4371de0a8a4b75023fb123d0210ac685ed2 Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
Date: Sat, 27 Jun 2020 13:21:12 +0200
|
||||
Subject: [PATCH] state: always update state variables
|
||||
|
||||
Or else we might leak the error string.
|
||||
---
|
||||
src/pipewire/impl-link.c | 8 ++++----
|
||||
src/pipewire/impl-node.c | 11 +++++------
|
||||
src/pipewire/impl-port.c | 24 +++++++++++++-----------
|
||||
3 files changed, 22 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/src/pipewire/impl-link.c b/src/pipewire/impl-link.c
|
||||
index 8be818b4..22446c86 100644
|
||||
--- a/src/pipewire/impl-link.c
|
||||
+++ b/src/pipewire/impl-link.c
|
||||
@@ -89,6 +89,10 @@ static void pw_impl_link_update_state(struct pw_impl_link *link, enum pw_link_st
|
||||
{
|
||||
enum pw_link_state old = link->info.state;
|
||||
|
||||
+ link->info.state = state;
|
||||
+ free((char*)link->info.error);
|
||||
+ link->info.error = error;
|
||||
+
|
||||
if (state == old)
|
||||
return;
|
||||
|
||||
@@ -105,10 +109,6 @@ static void pw_impl_link_update_state(struct pw_impl_link *link, enum pw_link_st
|
||||
pw_link_state_as_string(state));
|
||||
}
|
||||
|
||||
- link->info.state = state;
|
||||
- free((char*)link->info.error);
|
||||
- link->info.error = error;
|
||||
-
|
||||
pw_impl_link_emit_state_changed(link, old, state, error);
|
||||
|
||||
link->info.change_mask |= PW_LINK_CHANGE_MASK_STATE;
|
||||
diff --git a/src/pipewire/impl-node.c b/src/pipewire/impl-node.c
|
||||
index fb415cdb..97ee439d 100644
|
||||
--- a/src/pipewire/impl-node.c
|
||||
+++ b/src/pipewire/impl-node.c
|
||||
@@ -285,9 +285,12 @@ do_node_add(struct spa_loop *loop,
|
||||
|
||||
static void node_update_state(struct pw_impl_node *node, enum pw_node_state state, char *error)
|
||||
{
|
||||
- enum pw_node_state old;
|
||||
+ enum pw_node_state old = node->info.state;
|
||||
+
|
||||
+ free((char*)node->info.error);
|
||||
+ node->info.error = error;
|
||||
+ node->info.state = state;
|
||||
|
||||
- old = node->info.state;
|
||||
if (old == state)
|
||||
return;
|
||||
|
||||
@@ -302,10 +305,6 @@ static void node_update_state(struct pw_impl_node *node, enum pw_node_state stat
|
||||
pw_node_state_as_string(old), pw_node_state_as_string(state));
|
||||
}
|
||||
|
||||
- free((char*)node->info.error);
|
||||
- node->info.error = error;
|
||||
- node->info.state = state;
|
||||
-
|
||||
switch (state) {
|
||||
case PW_NODE_STATE_RUNNING:
|
||||
pw_loop_invoke(node->data_loop, do_node_add, 1, NULL, 0, true, node);
|
||||
diff --git a/src/pipewire/impl-port.c b/src/pipewire/impl-port.c
|
||||
index 7e4528e7..21434360 100644
|
||||
--- a/src/pipewire/impl-port.c
|
||||
+++ b/src/pipewire/impl-port.c
|
||||
@@ -98,17 +98,19 @@ void pw_impl_port_update_state(struct pw_impl_port *port, enum pw_impl_port_stat
|
||||
{
|
||||
enum pw_impl_port_state old = port->state;
|
||||
|
||||
- if (old != state) {
|
||||
- pw_log(state == PW_IMPL_PORT_STATE_ERROR ?
|
||||
- SPA_LOG_LEVEL_ERROR : SPA_LOG_LEVEL_DEBUG,
|
||||
- NAME" %p: state %s -> %s (%s)", port,
|
||||
- port_state_as_string(old), port_state_as_string(state), error);
|
||||
-
|
||||
- port->state = state;
|
||||
- free((void*)port->error);
|
||||
- port->error = error;
|
||||
- pw_impl_port_emit_state_changed(port, old, state, error);
|
||||
- }
|
||||
+ port->state = state;
|
||||
+ free((void*)port->error);
|
||||
+ port->error = error;
|
||||
+
|
||||
+ if (old == state)
|
||||
+ return;
|
||||
+
|
||||
+ pw_log(state == PW_IMPL_PORT_STATE_ERROR ?
|
||||
+ SPA_LOG_LEVEL_ERROR : SPA_LOG_LEVEL_DEBUG,
|
||||
+ NAME" %p: state %s -> %s (%s)", port,
|
||||
+ port_state_as_string(old), port_state_as_string(state), error);
|
||||
+
|
||||
+ pw_impl_port_emit_state_changed(port, old, state, error);
|
||||
}
|
||||
|
||||
static int tee_process(void *object)
|
@ -1,29 +0,0 @@
|
||||
From d871adbd4d602e0ba70e4c23f792aea1b214b79e Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
Date: Thu, 2 Jul 2020 10:52:15 +0200
|
||||
Subject: [PATCH] spa-device: fix leak of properties in error case
|
||||
|
||||
---
|
||||
src/modules/spa/spa-device.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/src/modules/spa/spa-device.c b/src/modules/spa/spa-device.c
|
||||
index 4486bce8..a1cc82e1 100644
|
||||
--- a/src/modules/spa/spa-device.c
|
||||
+++ b/src/modules/spa/spa-device.c
|
||||
@@ -147,6 +147,7 @@ struct pw_impl_device *pw_spa_device_load(struct pw_context *context,
|
||||
pw_log_error("can't get device interface %d", res);
|
||||
goto error_exit_unload;
|
||||
error_device:
|
||||
+ properties = NULL;
|
||||
res = -errno;
|
||||
pw_log_error("can't create device: %m");
|
||||
goto error_exit_unload;
|
||||
@@ -155,5 +156,7 @@ struct pw_impl_device *pw_spa_device_load(struct pw_context *context,
|
||||
pw_unload_spa_handle(handle);
|
||||
error_exit:
|
||||
errno = -res;
|
||||
+ if (properties)
|
||||
+ pw_properties_free(properties);
|
||||
return NULL;
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
From ac54b7ace1305795497fb01f6badeaf138035fbb Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
Date: Thu, 2 Jul 2020 15:52:50 +0200
|
||||
Subject: [PATCH] alsa: don't leak structure on error
|
||||
|
||||
---
|
||||
pipewire-alsa/alsa-plugins/pcm_pipewire.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/pipewire-alsa/alsa-plugins/pcm_pipewire.c b/pipewire-alsa/alsa-plugins/pcm_pipewire.c
|
||||
index 9d2397f4..d2fdcf44 100644
|
||||
--- a/pipewire-alsa/alsa-plugins/pcm_pipewire.c
|
||||
+++ b/pipewire-alsa/alsa-plugins/pcm_pipewire.c
|
||||
@@ -915,8 +915,10 @@ static int snd_pcm_pipewire_open(snd_pcm_t **pcmp, const char *name,
|
||||
else
|
||||
pw->node_name = strdup(node_name);
|
||||
|
||||
- if (pw->node_name == NULL)
|
||||
- return -errno;
|
||||
+ if (pw->node_name == NULL) {
|
||||
+ err = -errno;
|
||||
+ goto error;
|
||||
+ }
|
||||
|
||||
pw->target = PW_ID_ANY;
|
||||
if (str != NULL)
|
@ -1,41 +0,0 @@
|
||||
From e11d35107fc9e3a392b74855238be40f7bf69ff7 Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
Date: Thu, 2 Jul 2020 15:53:16 +0200
|
||||
Subject: [PATCH] alsa: don't leak properties on error
|
||||
|
||||
---
|
||||
pipewire-alsa/alsa-plugins/pcm_pipewire.c | 7 +++++--
|
||||
1 file changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/pipewire-alsa/alsa-plugins/pcm_pipewire.c b/pipewire-alsa/alsa-plugins/pcm_pipewire.c
|
||||
index d2fdcf44..560460cb 100644
|
||||
--- a/pipewire-alsa/alsa-plugins/pcm_pipewire.c
|
||||
+++ b/pipewire-alsa/alsa-plugins/pcm_pipewire.c
|
||||
@@ -890,7 +890,7 @@ static int snd_pcm_pipewire_open(snd_pcm_t **pcmp, const char *name,
|
||||
snd_pcm_pipewire_t *pw;
|
||||
int err;
|
||||
const char *str;
|
||||
- struct pw_properties *props;
|
||||
+ struct pw_properties *props = NULL;
|
||||
struct pw_loop *loop;
|
||||
|
||||
assert(pcmp);
|
||||
@@ -947,6 +947,7 @@ static int snd_pcm_pipewire_open(snd_pcm_t **pcmp, const char *name,
|
||||
|
||||
pw_thread_loop_lock(pw->main_loop);
|
||||
pw->core = pw_context_connect(pw->context, props, 0);
|
||||
+ props = NULL;
|
||||
if (pw->core == NULL) {
|
||||
err = -errno;
|
||||
pw_thread_loop_unlock(pw->main_loop);
|
||||
@@ -983,7 +984,9 @@ static int snd_pcm_pipewire_open(snd_pcm_t **pcmp, const char *name,
|
||||
|
||||
return 0;
|
||||
|
||||
- error:
|
||||
+error:
|
||||
+ if (props)
|
||||
+ pw_properties_free(props);
|
||||
snd_pcm_pipewire_free(pw);
|
||||
return err;
|
||||
}
|
@ -1,68 +0,0 @@
|
||||
From 21fc163c49309a04689fc4d636df4622198f5570 Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
Date: Thu, 2 Jul 2020 16:22:49 +0200
|
||||
Subject: [PATCH] stream: fix some more leaks in error paths
|
||||
|
||||
---
|
||||
src/pipewire/stream.c | 16 +++++++++++++---
|
||||
1 file changed, 13 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/pipewire/stream.c b/src/pipewire/stream.c
|
||||
index 086c3468..9db27296 100644
|
||||
--- a/src/pipewire/stream.c
|
||||
+++ b/src/pipewire/stream.c
|
||||
#@@ -1474,7 +1474,6 @@ pw_stream_connect(struct pw_stream *stream,
|
||||
# impl->warn_mlock = SPA_FLAG_IS_SET(flags, PW_STREAM_FLAG_RT_PROCESS);
|
||||
# pw_properties_set(stream->properties, "mem.warn-mlock", impl->warn_mlock ? "true" : "false");
|
||||
#
|
||||
#-
|
||||
# if ((pw_properties_get(stream->properties, PW_KEY_MEDIA_CLASS) == NULL)) {
|
||||
# const char *media_type = pw_properties_get(stream->properties, PW_KEY_MEDIA_TYPE);
|
||||
# pw_properties_setf(stream->properties, PW_KEY_MEDIA_CLASS, "Stream/%s/%s",
|
||||
@@ -1504,6 +1503,10 @@ pw_stream_connect(struct pw_stream *stream,
|
||||
|
||||
pw_log_debug(NAME" %p: creating node", stream);
|
||||
props = pw_properties_copy(stream->properties);
|
||||
+ if (props == NULL) {
|
||||
+ res = -errno;
|
||||
+ goto error_node;
|
||||
+ }
|
||||
|
||||
if ((str = pw_properties_get(props, PW_KEY_STREAM_MONITOR)) &&
|
||||
pw_properties_parse_bool(str)) {
|
||||
@@ -1533,6 +1536,7 @@ pw_stream_connect(struct pw_stream *stream,
|
||||
PW_VERSION_NODE,
|
||||
props,
|
||||
0);
|
||||
+ props = NULL;
|
||||
if (impl->node == NULL) {
|
||||
res = -errno;
|
||||
goto error_node;
|
||||
@@ -1540,6 +1544,7 @@ pw_stream_connect(struct pw_stream *stream,
|
||||
} else {
|
||||
impl->node = follower;
|
||||
pw_properties_free(props);
|
||||
+ props = NULL;
|
||||
}
|
||||
if (!SPA_FLAG_IS_SET(impl->flags, PW_STREAM_FLAG_INACTIVE))
|
||||
pw_impl_node_set_active(impl->node, true);
|
||||
@@ -1560,12 +1565,17 @@ pw_stream_connect(struct pw_stream *stream,
|
||||
|
||||
error_connect:
|
||||
pw_log_error(NAME" %p: can't connect: %s", stream, spa_strerror(res));
|
||||
- return res;
|
||||
+ goto exit_cleanup;
|
||||
error_node:
|
||||
pw_log_error(NAME" %p: can't make node: %s", stream, spa_strerror(res));
|
||||
- return res;
|
||||
+ goto exit_cleanup;
|
||||
error_proxy:
|
||||
pw_log_error(NAME" %p: can't make proxy: %s", stream, spa_strerror(res));
|
||||
+ goto exit_cleanup;
|
||||
+
|
||||
+exit_cleanup:
|
||||
+ if (props)
|
||||
+ pw_properties_free(props);
|
||||
return res;
|
||||
}
|
||||
|
@ -1,72 +0,0 @@
|
||||
From dfd3bd84b466a03c9e5d31a2944fdd911ae77a8d Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
Date: Wed, 1 Jul 2020 11:40:13 +0200
|
||||
Subject: [PATCH] buffers: increase max datas and metadata in buffers
|
||||
|
||||
---
|
||||
src/modules/module-client-node/client-node.c | 15 +++++++++------
|
||||
src/pipewire/buffers.c | 2 +-
|
||||
2 files changed, 10 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/src/modules/module-client-node/client-node.c b/src/modules/module-client-node/client-node.c
|
||||
index 4415fab9..c39cee9b 100644
|
||||
--- a/src/modules/module-client-node/client-node.c
|
||||
+++ b/src/modules/module-client-node/client-node.c
|
||||
@@ -50,6 +50,8 @@
|
||||
#define MAX_OUTPUTS 64
|
||||
|
||||
#define MAX_BUFFERS 64
|
||||
+#define MAX_METAS 16u
|
||||
+#define MAX_DATAS 64u
|
||||
#define MAX_AREAS 1024
|
||||
#define MAX_MIX 128
|
||||
|
||||
@@ -72,8 +74,8 @@
|
||||
struct buffer {
|
||||
struct spa_buffer *outbuf;
|
||||
struct spa_buffer buffer;
|
||||
- struct spa_meta metas[4];
|
||||
- struct spa_data datas[4];
|
||||
+ struct spa_meta metas[MAX_METAS];
|
||||
+ struct spa_data datas[MAX_DATAS];
|
||||
struct pw_memblock *mem;
|
||||
};
|
||||
|
||||
@@ -814,11 +816,12 @@ do_port_use_buffers(struct impl *impl,
|
||||
spa_log_debug(this->log, NAME" %p: buffer %d %d %d %d", this, i, mb[i].mem_id,
|
||||
mb[i].offset, mb[i].size);
|
||||
|
||||
- for (j = 0; j < buffers[i]->n_metas; j++)
|
||||
+ b->buffer.n_metas = SPA_MIN(buffers[i]->n_metas, MAX_METAS);
|
||||
+ for (j = 0; j < b->buffer.n_metas; j++)
|
||||
memcpy(&b->buffer.metas[j], &buffers[i]->metas[j], sizeof(struct spa_meta));
|
||||
- b->buffer.n_metas = j;
|
||||
|
||||
- for (j = 0; j < buffers[i]->n_datas; j++) {
|
||||
+ b->buffer.n_datas = SPA_MIN(buffers[i]->n_datas, MAX_DATAS);
|
||||
+ for (j = 0; j < b->buffer.n_datas; j++) {
|
||||
struct spa_data *d = &buffers[i]->datas[j];
|
||||
|
||||
memcpy(&b->datas[j], d, sizeof(struct spa_data));
|
||||
@@ -1070,7 +1073,7 @@ static int client_node_port_buffers(void *data,
|
||||
if (oldbuf->n_datas != newbuf->n_datas)
|
||||
return -EINVAL;
|
||||
|
||||
- for (j = 0; j < newbuf->n_datas; j++) {
|
||||
+ for (j = 0; j < b->buffer.n_datas; j++) {
|
||||
struct spa_chunk *oldchunk = oldbuf->datas[j].chunk;
|
||||
struct spa_data *d = &newbuf->datas[j];
|
||||
|
||||
diff --git a/src/pipewire/buffers.c b/src/pipewire/buffers.c
|
||||
index e95dfe38..08bf2236 100644
|
||||
--- a/src/pipewire/buffers.c
|
||||
+++ b/src/pipewire/buffers.c
|
||||
@@ -39,7 +39,7 @@
|
||||
#define NAME "buffers"
|
||||
|
||||
#define MAX_ALIGN 32
|
||||
-#define MAX_BLOCKS 4u
|
||||
+#define MAX_BLOCKS 64u
|
||||
|
||||
struct port {
|
||||
struct spa_node *node;
|
@ -1,22 +0,0 @@
|
||||
From a596cdbf2ef15bb90b19c470722b50524bb93261 Mon Sep 17 00:00:00 2001
|
||||
From: Wim Taymans <wtaymans@redhat.com>
|
||||
Date: Mon, 13 Jul 2020 11:50:06 +0200
|
||||
Subject: [PATCH] gst: return NULL for unknown format
|
||||
|
||||
---
|
||||
src/gst/gstpipewireformat.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/src/gst/gstpipewireformat.c b/src/gst/gstpipewireformat.c
|
||||
index 222bb9f2..2bd84bb3 100644
|
||||
--- a/src/gst/gstpipewireformat.c
|
||||
+++ b/src/gst/gstpipewireformat.c
|
||||
@@ -858,6 +858,8 @@ gst_caps_from_format (const struct spa_pod *format)
|
||||
"stream-format", G_TYPE_STRING, "byte-stream",
|
||||
"alignment", G_TYPE_STRING, "au",
|
||||
NULL);
|
||||
+ } else {
|
||||
+ return NULL;
|
||||
}
|
||||
if ((prop = spa_pod_object_find_prop (obj, prop, SPA_FORMAT_VIDEO_size))) {
|
||||
handle_rect_prop (prop, "width", "height", res);
|
2
_service
2
_service
@ -3,7 +3,7 @@
|
||||
<service name="obs_scm" mode="disabled">
|
||||
<param name="scm">git</param>
|
||||
<param name="url">https://gitlab.freedesktop.org/pipewire/pipewire.git</param>
|
||||
<param name="revision">0.3.6</param>
|
||||
<param name="revision">0.3.8</param>
|
||||
<param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
|
||||
<param name="versionrewrite-pattern">(.*)\+0</param>
|
||||
<param name="versionrewrite-replacement">\1</param>
|
||||
|
25
do-not-install-alsa-config-files.patch
Normal file
25
do-not-install-alsa-config-files.patch
Normal file
@ -0,0 +1,25 @@
|
||||
Index: pipewire-0.3.8/spa/plugins/alsa/meson.build
|
||||
===================================================================
|
||||
--- pipewire-0.3.8.orig/spa/plugins/alsa/meson.build
|
||||
+++ pipewire-0.3.8/spa/plugins/alsa/meson.build
|
||||
@@ -1,5 +1,5 @@
|
||||
subdir('acp')
|
||||
-subdir('mixer')
|
||||
+#subdir('mixer')
|
||||
|
||||
spa_alsa_sources = ['alsa.c',
|
||||
'alsa-udev.c',
|
||||
@@ -26,8 +26,8 @@ alsa_udevrules = [
|
||||
'90-pipewire-alsa.rules',
|
||||
]
|
||||
|
||||
-if libudev_dep.found()
|
||||
- install_data(alsa_udevrules,
|
||||
- install_dir : udevrulesdir,
|
||||
- )
|
||||
-endif
|
||||
+#if libudev_dep.found()
|
||||
+# install_data(alsa_udevrules,
|
||||
+# install_dir : udevrulesdir,
|
||||
+# )
|
||||
+#endif
|
@ -1,13 +0,0 @@
|
||||
Index: pipewire/meson.build
|
||||
===================================================================
|
||||
--- pipewire.orig/meson.build
|
||||
+++ pipewire/meson.build
|
||||
@@ -1,7 +1,7 @@
|
||||
project('pipewire', ['c' ],
|
||||
version : '0.3.6',
|
||||
license : 'MIT',
|
||||
- meson_version : '>= 0.49.0',
|
||||
+ meson_version : '>= 0.46.0',
|
||||
default_options : [ 'warning_level=3',
|
||||
'c_std=gnu99',
|
||||
'buildtype=debugoptimized' ])
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:44f078c3c8640a3ec8931da60094f265221588b319cf37b5cb5ca1c697ca2fdd
|
||||
size 5608461
|
3
pipewire-0.3.8.obscpio
Normal file
3
pipewire-0.3.8.obscpio
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:5faf44fcab46b704438df4c3f4ed2e152325e26488f9576d43339a6836433202
|
||||
size 6547469
|
119
pipewire.changes
119
pipewire.changes
@ -1,3 +1,122 @@
|
||||
-------------------------------------------------------------------
|
||||
Fri Jul 31 07:50:45 UTC 2020 - Antonio Larrosa <alarrosa@suse.com>
|
||||
|
||||
- Update to version 0.3.8:
|
||||
* Fix an embarrassing crasher in the JACK layer when metadata
|
||||
keys were removed.
|
||||
* Make it possible to add properties to jack clients with a
|
||||
PIPEWIRE_PROPS env variable. This can be used to make JACK
|
||||
nodes look like a device (like an effects rack).
|
||||
* Improvements in the session manager in how it links ports.
|
||||
Now it will try to link matching channels first and be more
|
||||
intelligent otherwise. The session manager will also configure
|
||||
the stream to the device port configuration when needed.
|
||||
* Add ofono backend for Bluetooth HeadSet support.
|
||||
* Improve default source and sink handling. They are now stored
|
||||
with their id, instead of name, in the metadata. This makes it
|
||||
work better with JACK because of JACK's limited name length.
|
||||
* Improve environment variables to make it possible to create
|
||||
and connect to servers other than "pipewire-0". Implement
|
||||
this in pulseaudio, JACK and alsa layers.
|
||||
* Add an alsa mixer plugin so that alsamixer works with PipeWire.
|
||||
It will configure the default source/sink volumes.
|
||||
* Fix capture devices. There was something wrong with how the
|
||||
resampler was used that caused corruption in the signal when
|
||||
the resampler was active.
|
||||
* We now ship alsa card paths, profile-sets configuration files
|
||||
and udev rules so that we don't have to rely on the pulseaudio
|
||||
ones.
|
||||
* Many build and stability fixes.
|
||||
|
||||
- Update to version 0.3.7:
|
||||
* Improved PulseAudio compatibility. The alsa card profile
|
||||
code was reused from PulseAudio. Devices now support
|
||||
all profiles, ports, jack detection, UCM and hardware
|
||||
mixers that PulseAudio implements. There should not
|
||||
be (almost) any difference between PipeWire and PulseAudio
|
||||
in how it presents and manages devices.
|
||||
Other missing API pieces such as the default sink/source
|
||||
and move_stream are implemented now. At this point
|
||||
it should be possible to replace PulseAudio with the
|
||||
compatibility layer for those who want to try.
|
||||
* Many fixes and improvements to the GStreamer elements.
|
||||
pipewiresrc now has the ability to periodically resend
|
||||
the last frame. This makes it possible for use-cases like
|
||||
screensharing to only update the screen on changes while
|
||||
still keeping the client side encoder busy. PipeWire
|
||||
elements can now also share a connection between them.
|
||||
* Improvements to the bluetooth nodes. Dynamically adding
|
||||
and removing devices should work much smoother now. Many
|
||||
fixes and improvements to a2dp and sco nodes.
|
||||
* Reduced memory usage by using less pre-allocated memory
|
||||
where possible. JACK clients are especially using less
|
||||
memory.
|
||||
* Support for passive links is added again. These are links
|
||||
that don't cause the associated driver to become active.
|
||||
This makes it possible to have blocks of effects+sinks go
|
||||
to suspend as a group when not in use.
|
||||
* Both consumers and producers can now ask to renegotiate
|
||||
the format. This required some cleanups and improvements
|
||||
to how links and node states were handled. More work is
|
||||
needed to implement more use cases.
|
||||
* Important fixes to how memory is shared with clients. Memory
|
||||
was not correctly freed in all cases, which would result
|
||||
in reuse of the wrong memory.
|
||||
* Support for planar formats for audio and video was added.
|
||||
* Improved error handling in the session manager.
|
||||
* Metadata is now used to manage default audio source and
|
||||
sink devices. The session manager will try to link streams
|
||||
to the default device. Changing the default device will
|
||||
move streams to the new device. PulseAudio and JACK layers
|
||||
respect the default source/sinks.
|
||||
* Metadata is used to tag the desired output device for
|
||||
a stream and the session manager will move streams when
|
||||
the metadata changes. The PulseAudio layer uses this to
|
||||
implement the move_stream feature.
|
||||
* Many fixes to the security modules. The session manager now
|
||||
has a flatpak module that grants permissions to flatpak
|
||||
apps. The PulseAudio layer now respects the permissions of
|
||||
objects. Security related properties are made read-only
|
||||
now. Different access modules can now coexist.
|
||||
* The portal module has been split up in 2 parts:
|
||||
+ a part living in the daemon that monitors the portal
|
||||
dbus owner and tags all clients from this PID. This
|
||||
part has to run in the daemon in order to securely
|
||||
tag the clients.
|
||||
+ a part in the session manager that uses the permission
|
||||
store to manage the permissions of portal managed
|
||||
clients.
|
||||
|
||||
- Drop patches already included in 0.3.7:
|
||||
* 0001-client-node-fix-buffer-size-calculation.patch
|
||||
* 0002-gst-fix-proxy-leaks.patch
|
||||
* 0003-pulse-fix-pa_card_info-profiles2-array-to-be-NULL-terminated.patch
|
||||
* 0004-pulse-fix-size-calculation.patch
|
||||
* 0005-jack-fix-crash-on-close-when-metadata-are-not-available.patch
|
||||
* 0006-a2dpsink-only-request-new-data-when-buffer-is-done.patch
|
||||
* 0007-pulse-fix-counter-while-populating-car_info-profiles.patch
|
||||
* 0008-impl-link-reset-state-before-starting-allocation.patch
|
||||
* 0009-impl-core-clear-the-mempool.patch
|
||||
* 0010-mem-reset-the-map-in-clear.patch
|
||||
* 0011-avoid-uninitialized-variables.patch
|
||||
* 0012-dlclose-on-errors.patch
|
||||
* 0013-stream-handle-NULL-context.patch
|
||||
* 0014-state-always-update-state-variables.patch
|
||||
* 0015-spa-device-fix-leak-of-properties-in-error-case.patch
|
||||
* 0016-alsa-dont-leak-structure-on-error.patch
|
||||
* 0017-alsa-dont-leak-properties-on-error.patch
|
||||
* 0018-stream-fix-some-more-leaks-in-error-paths.patch
|
||||
* 0019-buffers-increase-max-datas-and-metadata-in-buffers.patch
|
||||
* 0020-gst-return-NULL-for-unknown-format.patch
|
||||
- Drop patch and replace it with a sed substitution since the patch
|
||||
context includes the package version and would have to be
|
||||
modified in every package update:
|
||||
* fix-meson-required-version.patch
|
||||
- Add patch to not install alsa card paths, profile-sets
|
||||
configuration files and udev rules which upstream installs
|
||||
"so that we don't have to rely on the pulseaudio ones".
|
||||
* do-not-install-alsa-config-files.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jul 15 07:26:01 UTC 2020 - Antonio Larrosa <alarrosa@suse.com>
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
name: pipewire
|
||||
version: 0.3.6
|
||||
mtime: 1591782812
|
||||
commit: b04552b2522a2cdae9a246be6ed77bb5ae31cda3
|
||||
version: 0.3.8
|
||||
mtime: 1595942404
|
||||
commit: 229fad46914a32b621e88e53abd1270c62b0e158
|
||||
|
||||
|
@ -22,7 +22,7 @@
|
||||
%global provfind sh -c "grep -v -e 'libpulse.*\\.so' -e 'libjack.*\\.so' | %__find_provides"
|
||||
%global __find_provides %provfind
|
||||
|
||||
%define sover 0_3_6
|
||||
%define sover 0_3_8
|
||||
%define apiver 0.3
|
||||
%define apiver_str 0_3
|
||||
%define spa_ver 0.2
|
||||
@ -36,7 +36,7 @@
|
||||
%endif
|
||||
|
||||
Name: pipewire
|
||||
Version: 0.3.6
|
||||
Version: 0.3.8
|
||||
Release: 0
|
||||
Summary: A Multimedia Framework designed to be an audio and video server and more
|
||||
License: MIT
|
||||
@ -46,27 +46,7 @@ Source0: %{name}-%{version}.tar.xz
|
||||
Source1: %{name}-rpmlintrc
|
||||
Patch0: fix-memfd_create-call.patch
|
||||
Patch1: do-not-use-snd_pcm_ioplug_hw_avail.patch
|
||||
Patch2: fix-meson-required-version.patch
|
||||
Patch101: 0001-client-node-fix-buffer-size-calculation.patch
|
||||
Patch102: 0002-gst-fix-proxy-leaks.patch
|
||||
Patch103: 0003-pulse-fix-pa_card_info-profiles2-array-to-be-NULL-terminated.patch
|
||||
Patch104: 0004-pulse-fix-size-calculation.patch
|
||||
Patch105: 0005-jack-fix-crash-on-close-when-metadata-are-not-available.patch
|
||||
Patch106: 0006-a2dpsink-only-request-new-data-when-buffer-is-done.patch
|
||||
Patch107: 0007-pulse-fix-counter-while-populating-car_info-profiles.patch
|
||||
Patch108: 0008-impl-link-reset-state-before-starting-allocation.patch
|
||||
Patch109: 0009-impl-core-clear-the-mempool.patch
|
||||
Patch110: 0010-mem-reset-the-map-in-clear.patch
|
||||
Patch111: 0011-avoid-uninitialized-variables.patch
|
||||
Patch112: 0012-dlclose-on-errors.patch
|
||||
Patch113: 0013-stream-handle-NULL-context.patch
|
||||
Patch114: 0014-state-always-update-state-variables.patch
|
||||
Patch115: 0015-spa-device-fix-leak-of-properties-in-error-case.patch
|
||||
Patch116: 0016-alsa-dont-leak-structure-on-error.patch
|
||||
Patch117: 0017-alsa-dont-leak-properties-on-error.patch
|
||||
Patch118: 0018-stream-fix-some-more-leaks-in-error-paths.patch
|
||||
Patch119: 0019-buffers-increase-max-datas-and-metadata-in-buffers.patch
|
||||
Patch120: 0020-gst-return-NULL-for-unknown-format.patch
|
||||
Patch2: do-not-install-alsa-config-files.patch
|
||||
|
||||
BuildRequires: doxygen
|
||||
BuildRequires: fdupes
|
||||
@ -282,6 +262,7 @@ This package contains documentation for the PipeWire media server.
|
||||
%patch1 -p1
|
||||
sed -i -e "s/dependency('alsa', version : '>=1.1.7')/dependency('alsa', version : '>=1.1.5')/" meson.build
|
||||
%endif
|
||||
sed -i -e "s/meson_version : '>= 0.49.0',/meson_version : '>= 0.46.0',/" meson.build
|
||||
%patch2 -p1
|
||||
|
||||
%autopatch -m 101 -p1
|
||||
@ -385,6 +366,7 @@ fi
|
||||
|
||||
%dir %{_libdir}/alsa-lib
|
||||
%{_libdir}/alsa-lib/libasound_module_pcm_pipewire.so
|
||||
%{_libdir}/alsa-lib/libasound_module_ctl_pipewire.so
|
||||
%dir %{_datadir}/alsa/alsa.conf.d
|
||||
%{_datadir}/alsa/alsa.conf.d/50-pipewire.conf
|
||||
%{_datadir}/alsa/alsa.conf.d/99-pipewire-default.conf
|
||||
|
Loading…
Reference in New Issue
Block a user