From ae4042e7a2423a0be80ed518e6b6194651d8c95b Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 26 Jul 2023 10:44:47 +0200 Subject: [PATCH] stream: flags should not override properties Only set the properties from the flags when not already set before. Fixes #3382 --- src/pipewire/stream.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/pipewire/stream.c b/src/pipewire/stream.c index 88a060110..3f43493a1 100644 --- a/src/pipewire/stream.c +++ b/src/pipewire/stream.c @@ -1983,15 +1983,20 @@ pw_stream_connect(struct pw_stream *stream, if (target_id != PW_ID_ANY) /* XXX this is deprecated but still used by the portal and its apps */ - pw_properties_setf(stream->properties, PW_KEY_NODE_TARGET, "%d", target_id); + if (pw_properties_get(stream->properties, PW_KEY_NODE_TARGET) == NULL) + pw_properties_setf(stream->properties, PW_KEY_NODE_TARGET, "%d", target_id); if (flags & PW_STREAM_FLAG_AUTOCONNECT) - pw_properties_set(stream->properties, PW_KEY_NODE_AUTOCONNECT, "true"); + if (pw_properties_get(stream->properties, PW_KEY_NODE_AUTOCONNECT) == NULL) + pw_properties_set(stream->properties, PW_KEY_NODE_AUTOCONNECT, "true"); + if (flags & PW_STREAM_FLAG_EXCLUSIVE) + if (pw_properties_get(stream->properties, PW_KEY_NODE_EXCLUSIVE) == NULL) + pw_properties_set(stream->properties, PW_KEY_NODE_EXCLUSIVE, "true"); + if (flags & PW_STREAM_FLAG_DONT_RECONNECT) + if (pw_properties_get(stream->properties, PW_KEY_NODE_DONT_RECONNECT) == NULL) + pw_properties_set(stream->properties, PW_KEY_NODE_DONT_RECONNECT, "true"); + if (flags & PW_STREAM_FLAG_DRIVER) pw_properties_set(stream->properties, PW_KEY_NODE_DRIVER, "true"); - if (flags & PW_STREAM_FLAG_EXCLUSIVE) - pw_properties_set(stream->properties, PW_KEY_NODE_EXCLUSIVE, "true"); - if (flags & PW_STREAM_FLAG_DONT_RECONNECT) - pw_properties_set(stream->properties, PW_KEY_NODE_DONT_RECONNECT, "true"); if (flags & PW_STREAM_FLAG_TRIGGER) { pw_properties_set(stream->properties, PW_KEY_NODE_TRIGGER, "true"); impl->trigger = true;