浏览代码

libobs: Write default values to config

derrod 2 年之前
父节点
当前提交
75693a6682
共有 1 个文件被更改,包括 15 次插入6 次删除
  1. 15 6
      libobs/util/config-file.c

+ 15 - 6
libobs/util/config-file.c

@@ -579,6 +579,16 @@ unlock:
 	pthread_mutex_unlock(&config->mutex);
 }
 
+static void config_set_item_default(config_t *config, const char *section,
+				    const char *name, char *value)
+{
+	config_set_item(config, &config->defaults, section, name, value);
+
+	if (!config_has_user_value(config, section, name))
+		config_set_item(config, &config->sections, section, name,
+				bstrdup(value));
+}
+
 void config_set_string(config_t *config, const char *section, const char *name,
 		       const char *value)
 {
@@ -626,8 +636,7 @@ void config_set_default_string(config_t *config, const char *section,
 {
 	if (!value)
 		value = "";
-	config_set_item(config, &config->defaults, section, name,
-			bstrdup(value));
+	config_set_item_default(config, section, name, bstrdup(value));
 }
 
 void config_set_default_int(config_t *config, const char *section,
@@ -636,7 +645,7 @@ void config_set_default_int(config_t *config, const char *section,
 	struct dstr str;
 	dstr_init(&str);
 	dstr_printf(&str, "%" PRId64, value);
-	config_set_item(config, &config->defaults, section, name, str.array);
+	config_set_item_default(config, section, name, str.array);
 }
 
 void config_set_default_uint(config_t *config, const char *section,
@@ -645,14 +654,14 @@ void config_set_default_uint(config_t *config, const char *section,
 	struct dstr str;
 	dstr_init(&str);
 	dstr_printf(&str, "%" PRIu64, value);
-	config_set_item(config, &config->defaults, section, name, str.array);
+	config_set_item_default(config, section, name, str.array);
 }
 
 void config_set_default_bool(config_t *config, const char *section,
 			     const char *name, bool value)
 {
 	char *str = bstrdup(value ? "true" : "false");
-	config_set_item(config, &config->defaults, section, name, str);
+	config_set_item_default(config, section, name, str);
 }
 
 void config_set_default_double(config_t *config, const char *section,
@@ -661,7 +670,7 @@ void config_set_default_double(config_t *config, const char *section,
 	struct dstr str;
 	dstr_init(&str);
 	dstr_printf(&str, "%g", value);
-	config_set_item(config, &config->defaults, section, name, str.array);
+	config_set_item_default(config, section, name, str.array);
 }
 
 const char *config_get_string(config_t *config, const char *section,