summaryrefslogtreecommitdiffstats
path: root/audio
diff options
context:
space:
mode:
authorThomas Weißschuh <thomas@t-8ch.de>2022-08-21 21:41:52 +0200
committerPhilip Langdale <github.philipl@overt.org>2022-09-11 20:24:42 -0700
commitaa7223cd8c483db1606e5890360cb33763437d68 (patch)
treeb538dac8c9c5eeb2cad6293b4e5c2b612a07eefb /audio
parent235a66bfc8a5341d0c40966b3746a97749b1c9a0 (diff)
downloadmpv-aa7223cd8c483db1606e5890360cb33763437d68.tar.bz2
mpv-aa7223cd8c483db1606e5890360cb33763437d68.tar.xz
ao_pipewire: create is_sink_node helper
Diffstat (limited to 'audio')
-rw-r--r--audio/out/ao_pipewire.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/audio/out/ao_pipewire.c b/audio/out/ao_pipewire.c
index 1f9fe44e1e..c94d411262 100644
--- a/audio/out/ao_pipewire.c
+++ b/audio/out/ao_pipewire.c
@@ -276,21 +276,29 @@ struct registry_event_global_ctx {
void *sink_cb_ctx;
};
-static void for_each_sink_registry_event_global(void *data, uint32_t id,
- uint32_t permissions, const
- char *type, uint32_t version,
- const struct spa_dict *props)
+static bool is_sink_node(const char *type, const struct spa_dict *props)
{
- struct registry_event_global_ctx *ctx = data;
-
if (strcmp(type, PW_TYPE_INTERFACE_Node) != 0)
- return;
+ return false;
if (!props)
- return;
+ return false;
const char *class = spa_dict_lookup(props, PW_KEY_MEDIA_CLASS);
if (!class || strcmp(class, "Audio/Sink") != 0)
+ return false;
+
+ return true;
+}
+
+static void for_each_sink_registry_event_global(void *data, uint32_t id,
+ uint32_t permissions, const
+ char *type, uint32_t version,
+ const struct spa_dict *props)
+{
+ struct registry_event_global_ctx *ctx = data;
+
+ if (!is_sink_node(type, props))
return;
ctx->sink_cb(ctx->ao, id, props, ctx->sink_cb_ctx);