settings: use WpSpaJson to parse the settings

We need to use WpSpaJson to parse the values in WpSettings. This is because the
wireplumber configuration is written in JSON, so WpSettings should only hold
JSON values. To fix this, 2 API changes have been done:

- wp_settings_get_int() only accepts gint values, instead of gint64 values. This
is because the WpSpaJson API only parses int values, like spa_json_parse_int().

- wp_settings_get_string() now returns a newly allocated string, this is because
the string needs to be decoded in case it has quotes.
This commit is contained in:
Julian Bouzas
2022-08-11 11:30:10 -04:00
parent 9f2168e022
commit 2223cd47d4
8 changed files with 235 additions and 246 deletions

View File

@@ -739,11 +739,11 @@ wp_default_nodes_class_init (WpDefaultNodesClass * klass)
WP_PLUGIN_EXPORT gboolean
wireplumber__module_init (WpCore * core, GVariant * args, GError ** error)
{
gint64 save_interval_ms = DEFAULT_SAVE_INTERVAL_MS;
gint save_interval_ms = DEFAULT_SAVE_INTERVAL_MS;
gboolean use_persistent_storage = DEFAULT_USE_PERSISTENT_STORAGE;
gboolean auto_echo_cancel = DEFAULT_AUTO_ECHO_CANCEL;
const gchar *echo_cancel_sink_name = DEFAULT_ECHO_CANCEL_SINK_NAME;
const gchar *echo_cancel_source_name = DEFAULT_ECHO_CANCEL_SOURCE_NAME;
g_autofree gchar *echo_cancel_sink_name = NULL;
g_autofree gchar *echo_cancel_source_name = NULL;
g_autoptr (WpSettings) settings = wp_settings_get_instance(core, NULL);
wp_settings_get_int (settings, "device.save-interval-ms",
@@ -752,20 +752,23 @@ wireplumber__module_init (WpCore * core, GVariant * args, GError ** error)
&use_persistent_storage);
wp_settings_get_boolean (settings, "device.auto-echo-cancel",
&auto_echo_cancel);
wp_settings_get_string (settings, "device.echo-cancel-sink-name",
&echo_cancel_sink_name);
wp_settings_get_string (settings, "device.echo-cancel-source-name",
&echo_cancel_source_name);
echo_cancel_sink_name = wp_settings_get_string (settings,
"device.echo-cancel-sink-name");
echo_cancel_source_name = wp_settings_get_string (settings,
"device.echo-cancel-source-name");
wp_plugin_register (g_object_new (wp_default_nodes_get_type (),
"name", NAME,
"core", core,
"save-interval-ms", save_interval_ms,
"use-persistent-storage", use_persistent_storage,
"auto-echo-cancel", auto_echo_cancel,
"echo-cancel-sink-name", echo_cancel_sink_name,
"echo-cancel-source-name", echo_cancel_source_name,
NULL));
"name", NAME,
"core", core,
"save-interval-ms", save_interval_ms > 0 ?
(guint)save_interval_ms : DEFAULT_SAVE_INTERVAL_MS,
"use-persistent-storage", use_persistent_storage,
"auto-echo-cancel", auto_echo_cancel,
"echo-cancel-sink-name", echo_cancel_sink_name ?
echo_cancel_sink_name : DEFAULT_ECHO_CANCEL_SINK_NAME,
"echo-cancel-source-name", echo_cancel_source_name ?
echo_cancel_source_name : DEFAULT_ECHO_CANCEL_SOURCE_NAME,
NULL));
return TRUE;
}