mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-04-09 08:21:08 -04:00
snapcast: support newer snapcast service type
Newer snapcast servers publish the service as _snapcast-ctrl._tcp so listen for that as well. Fixes #5104
This commit is contained in:
parent
642504f5f9
commit
ac7728097f
1 changed files with 22 additions and 10 deletions
|
|
@ -162,7 +162,8 @@ static const struct spa_dict_item module_props[] = {
|
||||||
{ PW_KEY_MODULE_VERSION, PACKAGE_VERSION },
|
{ PW_KEY_MODULE_VERSION, PACKAGE_VERSION },
|
||||||
};
|
};
|
||||||
|
|
||||||
#define SERVICE_TYPE_CONTROL "_snapcast-jsonrpc._tcp"
|
#define SERVICE_TYPE_JSONRPC "_snapcast-jsonrpc._tcp"
|
||||||
|
#define SERVICE_TYPE_CONTROL "_snapcast-ctrl._tcp"
|
||||||
|
|
||||||
struct impl {
|
struct impl {
|
||||||
struct pw_context *context;
|
struct pw_context *context;
|
||||||
|
|
@ -176,7 +177,8 @@ struct impl {
|
||||||
|
|
||||||
AvahiPoll *avahi_poll;
|
AvahiPoll *avahi_poll;
|
||||||
AvahiClient *client;
|
AvahiClient *client;
|
||||||
AvahiServiceBrowser *sink_browser;
|
AvahiServiceBrowser *jsonrpc_browser;
|
||||||
|
AvahiServiceBrowser *ctrl_browser;
|
||||||
|
|
||||||
struct spa_list tunnel_list;
|
struct spa_list tunnel_list;
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
|
|
@ -252,8 +254,10 @@ static void impl_free(struct impl *impl)
|
||||||
spa_list_consume(t, &impl->tunnel_list, link)
|
spa_list_consume(t, &impl->tunnel_list, link)
|
||||||
free_tunnel(t);
|
free_tunnel(t);
|
||||||
|
|
||||||
if (impl->sink_browser)
|
if (impl->jsonrpc_browser)
|
||||||
avahi_service_browser_free(impl->sink_browser);
|
avahi_service_browser_free(impl->jsonrpc_browser);
|
||||||
|
if (impl->ctrl_browser)
|
||||||
|
avahi_service_browser_free(impl->ctrl_browser);
|
||||||
if (impl->client)
|
if (impl->client)
|
||||||
avahi_client_free(impl->client);
|
avahi_client_free(impl->client);
|
||||||
if (impl->avahi_poll)
|
if (impl->avahi_poll)
|
||||||
|
|
@ -818,9 +822,13 @@ static void client_callback(AvahiClient *c, AvahiClientState state, void *userda
|
||||||
case AVAHI_CLIENT_S_REGISTERING:
|
case AVAHI_CLIENT_S_REGISTERING:
|
||||||
case AVAHI_CLIENT_S_RUNNING:
|
case AVAHI_CLIENT_S_RUNNING:
|
||||||
case AVAHI_CLIENT_S_COLLISION:
|
case AVAHI_CLIENT_S_COLLISION:
|
||||||
if (impl->sink_browser == NULL)
|
if (impl->ctrl_browser == NULL)
|
||||||
impl->sink_browser = make_browser(impl, SERVICE_TYPE_CONTROL);
|
impl->ctrl_browser = make_browser(impl, SERVICE_TYPE_CONTROL);
|
||||||
if (impl->sink_browser == NULL)
|
if (impl->ctrl_browser == NULL)
|
||||||
|
goto error;
|
||||||
|
if (impl->jsonrpc_browser == NULL)
|
||||||
|
impl->jsonrpc_browser = make_browser(impl, SERVICE_TYPE_JSONRPC);
|
||||||
|
if (impl->jsonrpc_browser == NULL)
|
||||||
goto error;
|
goto error;
|
||||||
break;
|
break;
|
||||||
case AVAHI_CLIENT_FAILURE:
|
case AVAHI_CLIENT_FAILURE:
|
||||||
|
|
@ -829,9 +837,13 @@ static void client_callback(AvahiClient *c, AvahiClientState state, void *userda
|
||||||
|
|
||||||
SPA_FALLTHROUGH;
|
SPA_FALLTHROUGH;
|
||||||
case AVAHI_CLIENT_CONNECTING:
|
case AVAHI_CLIENT_CONNECTING:
|
||||||
if (impl->sink_browser) {
|
if (impl->ctrl_browser) {
|
||||||
avahi_service_browser_free(impl->sink_browser);
|
avahi_service_browser_free(impl->ctrl_browser);
|
||||||
impl->sink_browser = NULL;
|
impl->ctrl_browser = NULL;
|
||||||
|
}
|
||||||
|
if (impl->jsonrpc_browser) {
|
||||||
|
avahi_service_browser_free(impl->jsonrpc_browser);
|
||||||
|
impl->jsonrpc_browser = NULL;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue