mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-02 09:01:50 -05:00
pulse: emit server change events when default sink/source change
This commit is contained in:
parent
b896d65723
commit
bf9b58e1f5
3 changed files with 21 additions and 5 deletions
|
|
@ -962,7 +962,18 @@ static int metadata_property(void *object,
|
||||||
const char *value)
|
const char *value)
|
||||||
{
|
{
|
||||||
struct global *global = object;
|
struct global *global = object;
|
||||||
return pa_metadata_update(global, subject, key, type, value);
|
int res;
|
||||||
|
|
||||||
|
if ((res = pa_metadata_update(global, subject, key, type, value)) < 0)
|
||||||
|
return res;
|
||||||
|
|
||||||
|
if (key) {
|
||||||
|
if (strcmp(key, METADATA_DEFAULT_SINK) == 0 ||
|
||||||
|
strcmp(key, METADATA_DEFAULT_SOURCE) == 0) {
|
||||||
|
emit_event(global->context, global, PA_SUBSCRIPTION_EVENT_CHANGE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct pw_metadata_events metadata_events = {
|
static const struct pw_metadata_events metadata_events = {
|
||||||
|
|
@ -1144,6 +1155,8 @@ static int set_mask(pa_context *c, struct global *g)
|
||||||
if (c->metadata == NULL) {
|
if (c->metadata == NULL) {
|
||||||
ginfo = &metadata_info;
|
ginfo = &metadata_info;
|
||||||
c->metadata = g;
|
c->metadata = g;
|
||||||
|
g->mask = PA_SUBSCRIPTION_MASK_SERVER;
|
||||||
|
g->event = PA_SUBSCRIPTION_EVENT_SERVER;
|
||||||
}
|
}
|
||||||
pw_array_init(&g->metadata_info.metadata, 64);
|
pw_array_init(&g->metadata_info.metadata, 64);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -1630,7 +1643,7 @@ pa_operation* pa_context_set_default_sink(pa_context *c, const char *name, pa_co
|
||||||
d = o->userdata;
|
d = o->userdata;
|
||||||
d->mask = PA_SUBSCRIPTION_MASK_SINK;
|
d->mask = PA_SUBSCRIPTION_MASK_SINK;
|
||||||
d->name = pa_xstrdup(name);
|
d->name = pa_xstrdup(name);
|
||||||
d->key = "http://pipewire.org/metadata/default-audio-sink",
|
d->key = METADATA_DEFAULT_SINK;
|
||||||
d->cb = cb;
|
d->cb = cb;
|
||||||
d->userdata = userdata;
|
d->userdata = userdata;
|
||||||
pa_operation_sync(o);
|
pa_operation_sync(o);
|
||||||
|
|
@ -1650,7 +1663,7 @@ pa_operation* pa_context_set_default_source(pa_context *c, const char *name, pa_
|
||||||
d = o->userdata;
|
d = o->userdata;
|
||||||
d->mask = PA_SUBSCRIPTION_MASK_SOURCE;
|
d->mask = PA_SUBSCRIPTION_MASK_SOURCE;
|
||||||
d->name = pa_xstrdup(name);
|
d->name = pa_xstrdup(name);
|
||||||
d->key = "http://pipewire.org/metadata/default-audio-source",
|
d->key = METADATA_DEFAULT_SOURCE;
|
||||||
d->cb = cb;
|
d->cb = cb;
|
||||||
d->userdata = userdata;
|
d->userdata = userdata;
|
||||||
pa_operation_sync(o);
|
pa_operation_sync(o);
|
||||||
|
|
|
||||||
|
|
@ -480,6 +480,9 @@ pa_operation *pa_operation_new(pa_context *c, pa_stream *s, pa_operation_cb_t cb
|
||||||
void pa_operation_done(pa_operation *o);
|
void pa_operation_done(pa_operation *o);
|
||||||
int pa_operation_sync(pa_operation *o);
|
int pa_operation_sync(pa_operation *o);
|
||||||
|
|
||||||
|
#define METADATA_DEFAULT_SINK "default.audio.sink.name"
|
||||||
|
#define METADATA_DEFAULT_SOURCE "default.audio.source.name"
|
||||||
|
|
||||||
int pa_metadata_update(struct global *global, uint32_t subject, const char *key,
|
int pa_metadata_update(struct global *global, uint32_t subject, const char *key,
|
||||||
const char *type, const char *value);
|
const char *type, const char *value);
|
||||||
int pa_metadata_get(struct global *global, uint32_t subject, const char *key,
|
int pa_metadata_get(struct global *global, uint32_t subject, const char *key,
|
||||||
|
|
|
||||||
|
|
@ -1264,9 +1264,9 @@ static const char *get_default_name(pa_context *c, uint32_t mask)
|
||||||
|
|
||||||
if (c->metadata) {
|
if (c->metadata) {
|
||||||
if (mask & PA_SUBSCRIPTION_MASK_SINK)
|
if (mask & PA_SUBSCRIPTION_MASK_SINK)
|
||||||
key = "http://pipewire.org/metadata/default-audio-sink";
|
key = METADATA_DEFAULT_SINK;
|
||||||
else if (mask & PA_SUBSCRIPTION_MASK_SOURCE)
|
else if (mask & PA_SUBSCRIPTION_MASK_SOURCE)
|
||||||
key = "http://pipewire.org/metadata/default-audio-source";
|
key = METADATA_DEFAULT_SOURCE;
|
||||||
else
|
else
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue