mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -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)
 | 
			
		||||
{
 | 
			
		||||
	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 = {
 | 
			
		||||
| 
						 | 
				
			
			@ -1144,6 +1155,8 @@ static int set_mask(pa_context *c, struct global *g)
 | 
			
		|||
		if (c->metadata == NULL) {
 | 
			
		||||
			ginfo = &metadata_info;
 | 
			
		||||
			c->metadata = g;
 | 
			
		||||
			g->mask = PA_SUBSCRIPTION_MASK_SERVER;
 | 
			
		||||
			g->event = PA_SUBSCRIPTION_EVENT_SERVER;
 | 
			
		||||
		}
 | 
			
		||||
		pw_array_init(&g->metadata_info.metadata, 64);
 | 
			
		||||
	} else {
 | 
			
		||||
| 
						 | 
				
			
			@ -1630,7 +1643,7 @@ pa_operation* pa_context_set_default_sink(pa_context *c, const char *name, pa_co
 | 
			
		|||
	d = o->userdata;
 | 
			
		||||
	d->mask = PA_SUBSCRIPTION_MASK_SINK;
 | 
			
		||||
	d->name = pa_xstrdup(name);
 | 
			
		||||
	d->key = "http://pipewire.org/metadata/default-audio-sink",
 | 
			
		||||
	d->key = METADATA_DEFAULT_SINK;
 | 
			
		||||
	d->cb = cb;
 | 
			
		||||
	d->userdata = userdata;
 | 
			
		||||
	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->mask = PA_SUBSCRIPTION_MASK_SOURCE;
 | 
			
		||||
	d->name = pa_xstrdup(name);
 | 
			
		||||
	d->key = "http://pipewire.org/metadata/default-audio-source",
 | 
			
		||||
	d->key = METADATA_DEFAULT_SOURCE;
 | 
			
		||||
	d->cb = cb;
 | 
			
		||||
	d->userdata = userdata;
 | 
			
		||||
	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);
 | 
			
		||||
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,
 | 
			
		||||
                        const char *type, const char *value);
 | 
			
		||||
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 (mask & PA_SUBSCRIPTION_MASK_SINK)
 | 
			
		||||
			key = "http://pipewire.org/metadata/default-audio-sink";
 | 
			
		||||
			key = METADATA_DEFAULT_SINK;
 | 
			
		||||
		else if (mask & PA_SUBSCRIPTION_MASK_SOURCE)
 | 
			
		||||
			key = "http://pipewire.org/metadata/default-audio-source";
 | 
			
		||||
			key = METADATA_DEFAULT_SOURCE;
 | 
			
		||||
		else
 | 
			
		||||
			return NULL;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue