mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	pulse: fix load_module
This commit is contained in:
		
							parent
							
								
									588a946311
								
							
						
					
					
						commit
						5dedf483bb
					
				
					 1 changed files with 18 additions and 13 deletions
				
			
		| 
						 | 
				
			
			@ -1478,9 +1478,9 @@ static void module_proxy_error(void *data, int seq, int res, const char *message
 | 
			
		|||
	on_load_module(o, d);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void on_null_sink_module(pa_operation *o, void *userdata)
 | 
			
		||||
static int load_null_sink_module(pa_operation *o)
 | 
			
		||||
{
 | 
			
		||||
	struct load_module *d = userdata;
 | 
			
		||||
	struct load_module *d = o->userdata;
 | 
			
		||||
	pa_context *c = o->context;
 | 
			
		||||
	static const struct pw_proxy_events proxy_events = {
 | 
			
		||||
		.bound = module_proxy_bound,
 | 
			
		||||
| 
						 | 
				
			
			@ -1488,15 +1488,18 @@ static void on_null_sink_module(pa_operation *o, void *userdata)
 | 
			
		|||
	};
 | 
			
		||||
 | 
			
		||||
	if (d->proxy != NULL)
 | 
			
		||||
		return;
 | 
			
		||||
		return -EBUSY;
 | 
			
		||||
 | 
			
		||||
	d->proxy = pw_core_create_object(c->core,
 | 
			
		||||
                                "adapter",
 | 
			
		||||
                                PW_TYPE_INTERFACE_Node,
 | 
			
		||||
                                PW_VERSION_NODE,
 | 
			
		||||
                                d->props ? &d->props->dict : NULL, 0);
 | 
			
		||||
	if (d->proxy == NULL)
 | 
			
		||||
		return -errno;
 | 
			
		||||
 | 
			
		||||
	pw_proxy_add_listener(d->proxy, &d->listener, &proxy_events, o);
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void add_props(struct pw_properties *props, const char *str)
 | 
			
		||||
| 
						 | 
				
			
			@ -1536,8 +1539,8 @@ pa_operation* pa_context_load_module(pa_context *c, const char*name, const char
 | 
			
		|||
	struct load_module *d;
 | 
			
		||||
	int error = PA_ERR_NOTIMPLEMENTED;;
 | 
			
		||||
	struct pw_properties *props = NULL;
 | 
			
		||||
	pa_operation_cb_t op_cb = on_load_module;
 | 
			
		||||
	const char *str;
 | 
			
		||||
	bool sync = true;
 | 
			
		||||
 | 
			
		||||
	pa_assert(c);
 | 
			
		||||
	pa_assert(c->refcount >= 1);
 | 
			
		||||
| 
						 | 
				
			
			@ -1545,6 +1548,12 @@ pa_operation* pa_context_load_module(pa_context *c, const char*name, const char
 | 
			
		|||
 | 
			
		||||
	pw_log_debug("context %p: name:%s arg:%s", c, name, argument);
 | 
			
		||||
 | 
			
		||||
	o = pa_operation_new(c, NULL, on_load_module, sizeof(struct load_module));
 | 
			
		||||
	d = o->userdata;
 | 
			
		||||
	d->cb = cb;
 | 
			
		||||
	d->userdata = userdata;
 | 
			
		||||
	d->idx = PA_INVALID_INDEX;
 | 
			
		||||
 | 
			
		||||
	if (strcmp(name, "module-null-sink") == 0) {
 | 
			
		||||
		props = pw_properties_new_string(argument);
 | 
			
		||||
		if (props == NULL) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1567,18 +1576,14 @@ pa_operation* pa_context_load_module(pa_context *c, const char*name, const char
 | 
			
		|||
		}
 | 
			
		||||
		pw_properties_set(props, "factory.name", "support.null-audio-sink");
 | 
			
		||||
 | 
			
		||||
		error = 0;
 | 
			
		||||
		op_cb = on_null_sink_module;
 | 
			
		||||
		d->props = props;
 | 
			
		||||
		error = load_null_sink_module(o);
 | 
			
		||||
		sync = error < 0;
 | 
			
		||||
	}
 | 
			
		||||
done:
 | 
			
		||||
	o = pa_operation_new(c, NULL, op_cb, sizeof(struct load_module));
 | 
			
		||||
	d = o->userdata;
 | 
			
		||||
	d->cb = cb;
 | 
			
		||||
	d->error = error;
 | 
			
		||||
	d->userdata = userdata;
 | 
			
		||||
	d->idx = PA_INVALID_INDEX;
 | 
			
		||||
	d->props = props;
 | 
			
		||||
	pa_operation_sync(o);
 | 
			
		||||
	if (sync)
 | 
			
		||||
		pa_operation_sync(o);
 | 
			
		||||
 | 
			
		||||
	return o;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue