aboutsummaryrefslogtreecommitdiffstats
path: root/src/output_init.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/output_init.c')
-rw-r--r--src/output_init.c38
1 files changed, 20 insertions, 18 deletions
diff --git a/src/output_init.c b/src/output_init.c
index c938d7eeb..664ca9eb4 100644
--- a/src/output_init.c
+++ b/src/output_init.c
@@ -31,16 +31,6 @@
#define AUDIO_OUTPUT_NAME "name"
#define AUDIO_OUTPUT_FORMAT "format"
-#define getBlockParam(name, str, force) { \
- bp = getBlockParam(param, name); \
- if(force && bp == NULL) { \
- g_error("couldn't find parameter \"%s\" in audio output " \
- "definition beginning at %i\n", \
- name, param->line); \
- } \
- if(bp) str = bp->value; \
-}
-
static const struct audio_output_plugin *
audio_output_detect(GError **error)
{
@@ -68,17 +58,18 @@ bool
audio_output_init(struct audio_output *ao, const struct config_param *param,
GError **error)
{
- const char *name = NULL;
- char *format = NULL;
- struct block_param *bp = NULL;
+ const char *format;
const struct audio_output_plugin *plugin = NULL;
if (param) {
const char *type = NULL;
- getBlockParam(AUDIO_OUTPUT_NAME, name, 1);
- getBlockParam(AUDIO_OUTPUT_TYPE, type, 1);
- getBlockParam(AUDIO_OUTPUT_FORMAT, format, 0);
+ type = config_get_block_string(param, AUDIO_OUTPUT_TYPE, NULL);
+ if (type == NULL) {
+ g_set_error(error, audio_output_quark(), 0,
+ "Missing \"type\" configuration");
+ return false;
+ }
plugin = audio_output_plugin_get(type);
if (plugin == NULL) {
@@ -87,6 +78,17 @@ audio_output_init(struct audio_output *ao, const struct config_param *param,
type);
return false;
}
+
+ ao->name = config_get_block_string(param, AUDIO_OUTPUT_NAME,
+ NULL);
+ if (ao->name == NULL) {
+ g_set_error(error, audio_output_quark(), 0,
+ "Missing \"name\" configuration");
+ return false;
+ }
+
+ format = config_get_block_string(param, AUDIO_OUTPUT_FORMAT,
+ NULL);
} else {
g_warning("No \"%s\" defined in config file\n",
CONF_AUDIO_OUTPUT);
@@ -98,10 +100,10 @@ audio_output_init(struct audio_output *ao, const struct config_param *param,
g_message("Successfully detected a %s audio device",
plugin->name);
- name = "default detected output";
+ ao->name = "default detected output";
+ format = NULL;
}
- ao->name = name;
ao->plugin = plugin;
ao->enabled = config_get_block_bool(param, "enabled", true);
ao->open = false;