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:
@@ -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;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user