mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	context: move loading of configuration into conf.c
This commit is contained in:
		
							parent
							
								
									8f0478a2ce
								
							
						
					
					
						commit
						a9cf72932a
					
				
					 3 changed files with 49 additions and 38 deletions
				
			
		| 
						 | 
					@ -891,6 +891,51 @@ static int update_props(void *user_data, const char *location, const char *key,
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int try_load_conf(const char *conf_prefix, const char *conf_name,
 | 
				
			||||||
 | 
								 struct pw_properties *conf)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						int res;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (conf_name == NULL)
 | 
				
			||||||
 | 
							return -EINVAL;
 | 
				
			||||||
 | 
						if (spa_streq(conf_name, "null"))
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
						if ((res = pw_conf_load_conf(conf_prefix, conf_name, conf)) < 0) {
 | 
				
			||||||
 | 
							bool skip_prefix = conf_prefix == NULL || conf_name[0] == '/';
 | 
				
			||||||
 | 
							pw_log_warn("can't load config %s%s%s: %s",
 | 
				
			||||||
 | 
									skip_prefix ? "" : conf_prefix,
 | 
				
			||||||
 | 
									skip_prefix ? "" : "/",
 | 
				
			||||||
 | 
									conf_name, spa_strerror(res));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return res;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
 | 
					int pw_conf_load_conf_for_context(struct pw_properties *props, struct pw_properties *conf)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						const char *conf_prefix, *conf_name;
 | 
				
			||||||
 | 
						int res;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						conf_prefix = getenv("PIPEWIRE_CONFIG_PREFIX");
 | 
				
			||||||
 | 
						if (conf_prefix == NULL)
 | 
				
			||||||
 | 
							conf_prefix = pw_properties_get(props, PW_KEY_CONFIG_PREFIX);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						conf_name = getenv("PIPEWIRE_CONFIG_NAME");
 | 
				
			||||||
 | 
						if ((res = try_load_conf(conf_prefix, conf_name, conf)) < 0) {
 | 
				
			||||||
 | 
							conf_name = pw_properties_get(props, PW_KEY_CONFIG_NAME);
 | 
				
			||||||
 | 
							if ((res = try_load_conf(conf_prefix, conf_name, conf)) < 0) {
 | 
				
			||||||
 | 
								conf_name = "client.conf";
 | 
				
			||||||
 | 
								if ((res = try_load_conf(conf_prefix, conf_name, conf)) < 0) {
 | 
				
			||||||
 | 
									pw_log_error("can't load default config %s: %s",
 | 
				
			||||||
 | 
										conf_name, spa_strerror(res));
 | 
				
			||||||
 | 
									return res;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return res;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SPA_EXPORT
 | 
					SPA_EXPORT
 | 
				
			||||||
int pw_context_conf_update_props(struct pw_context *context,
 | 
					int pw_context_conf_update_props(struct pw_context *context,
 | 
				
			||||||
		const char *section, struct pw_properties *props)
 | 
							const char *section, struct pw_properties *props)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -33,6 +33,7 @@
 | 
				
			||||||
 * \{
 | 
					 * \{
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int pw_conf_load_conf_for_context(struct pw_properties *props, struct pw_properties *conf);
 | 
				
			||||||
int pw_conf_load_conf(const char *prefix, const char *name, struct pw_properties *conf);
 | 
					int pw_conf_load_conf(const char *prefix, const char *name, struct pw_properties *conf);
 | 
				
			||||||
int pw_conf_load_state(const char *prefix, const char *name, struct pw_properties *conf);
 | 
					int pw_conf_load_state(const char *prefix, const char *name, struct pw_properties *conf);
 | 
				
			||||||
int pw_conf_save_state(const char *prefix, const char *name, const struct pw_properties *conf);
 | 
					int pw_conf_save_state(const char *prefix, const char *name, const struct pw_properties *conf);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -101,26 +101,6 @@ static void fill_properties(struct pw_context *context)
 | 
				
			||||||
	pw_properties_set(properties, PW_KEY_CORE_NAME, context->core->info.name);
 | 
						pw_properties_set(properties, PW_KEY_CORE_NAME, context->core->info.name);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int try_load_conf(struct pw_context *this, const char *conf_prefix,
 | 
					 | 
				
			||||||
		const char *conf_name, struct pw_properties *conf)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	int res;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (conf_name == NULL)
 | 
					 | 
				
			||||||
		return -EINVAL;
 | 
					 | 
				
			||||||
	if (spa_streq(conf_name, "null"))
 | 
					 | 
				
			||||||
		return 0;
 | 
					 | 
				
			||||||
	if ((res = pw_conf_load_conf(conf_prefix, conf_name, conf)) < 0) {
 | 
					 | 
				
			||||||
		bool skip_prefix = conf_prefix == NULL || conf_name[0] == '/';
 | 
					 | 
				
			||||||
		pw_log_warn("%p: can't load config %s%s%s: %s",
 | 
					 | 
				
			||||||
				this,
 | 
					 | 
				
			||||||
				skip_prefix ? "" : conf_prefix,
 | 
					 | 
				
			||||||
				skip_prefix ? "" : "/",
 | 
					 | 
				
			||||||
				conf_name, spa_strerror(res));
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return res;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int context_set_freewheel(struct pw_context *context, bool freewheel)
 | 
					static int context_set_freewheel(struct pw_context *context, bool freewheel)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct spa_thread *thr;
 | 
						struct spa_thread *thr;
 | 
				
			||||||
| 
						 | 
					@ -211,7 +191,7 @@ struct pw_context *pw_context_new(struct pw_loop *main_loop,
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct impl *impl;
 | 
						struct impl *impl;
 | 
				
			||||||
	struct pw_context *this;
 | 
						struct pw_context *this;
 | 
				
			||||||
	const char *lib, *str, *conf_prefix, *conf_name;
 | 
						const char *lib, *str;
 | 
				
			||||||
	void *dbus_iface = NULL;
 | 
						void *dbus_iface = NULL;
 | 
				
			||||||
	uint32_t n_support;
 | 
						uint32_t n_support;
 | 
				
			||||||
	struct pw_properties *pr, *conf;
 | 
						struct pw_properties *pr, *conf;
 | 
				
			||||||
| 
						 | 
					@ -270,23 +250,8 @@ struct pw_context *pw_context_new(struct pw_loop *main_loop,
 | 
				
			||||||
		goto error_free;
 | 
							goto error_free;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	this->conf = conf;
 | 
						this->conf = conf;
 | 
				
			||||||
 | 
						if ((res = pw_conf_load_conf_for_context (properties, conf)) < 0)
 | 
				
			||||||
	conf_prefix = getenv("PIPEWIRE_CONFIG_PREFIX");
 | 
							goto error_free;
 | 
				
			||||||
	if (conf_prefix == NULL)
 | 
					 | 
				
			||||||
		conf_prefix = pw_properties_get(properties, PW_KEY_CONFIG_PREFIX);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	conf_name = getenv("PIPEWIRE_CONFIG_NAME");
 | 
					 | 
				
			||||||
	if (try_load_conf(this, conf_prefix, conf_name, conf) < 0) {
 | 
					 | 
				
			||||||
		conf_name = pw_properties_get(properties, PW_KEY_CONFIG_NAME);
 | 
					 | 
				
			||||||
		if (try_load_conf(this, conf_prefix, conf_name, conf) < 0) {
 | 
					 | 
				
			||||||
			conf_name = "client.conf";
 | 
					 | 
				
			||||||
			if ((res = try_load_conf(this, conf_prefix, conf_name, conf)) < 0) {
 | 
					 | 
				
			||||||
				pw_log_error("%p: can't load config %s: %s",
 | 
					 | 
				
			||||||
					this, conf_name, spa_strerror(res));
 | 
					 | 
				
			||||||
				goto error_free;
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	n_support = pw_get_support(this->support, SPA_N_ELEMENTS(this->support) - 6);
 | 
						n_support = pw_get_support(this->support, SPA_N_ELEMENTS(this->support) - 6);
 | 
				
			||||||
	cpu = spa_support_find(this->support, n_support, SPA_TYPE_INTERFACE_CPU);
 | 
						cpu = spa_support_find(this->support, n_support, SPA_TYPE_INTERFACE_CPU);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue