aboutsummaryrefslogtreecommitdiffhomepage
path: root/config.c
diff options
context:
space:
mode:
authorcbdev <cb@cbcdn.com>2020-01-12 17:34:14 +0100
committercbdev <cb@cbcdn.com>2020-01-12 17:34:14 +0100
commit78b21a9ac3f975f35ec7b61108531e1495eb91c0 (patch)
treef41cfc78f3392d501293c3afdd7b42111c863615 /config.c
parent0a696be5af7db63c1c7354518c839d8543f1ba25 (diff)
downloadmidimonster-78b21a9ac3f975f35ec7b61108531e1495eb91c0.tar.gz
midimonster-78b21a9ac3f975f35ec7b61108531e1495eb91c0.tar.bz2
midimonster-78b21a9ac3f975f35ec7b61108531e1495eb91c0.zip
Rework instance creation
Diffstat (limited to 'config.c')
-rw-r--r--config.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/config.c b/config.c
index d2b65d4..920e161 100644
--- a/config.c
+++ b/config.c
@@ -279,7 +279,7 @@ static int config_map(char* to_raw, char* from_raw){
|| config_glob_scan(instance_from, &spec_from)){
goto done;
}
-
+
if((spec_to.channels != spec_from.channels && spec_from.channels != 1 && spec_to.channels != 1)
|| spec_to.channels == 0
|| spec_from.channels == 0){
@@ -298,7 +298,7 @@ static int config_map(char* to_raw, char* from_raw){
for(n = 0; !rv && n < max(spec_from.channels, spec_to.channels); n++){
channel_from = config_glob_resolve(instance_from, &spec_from, min(n, spec_from.channels), mmchannel_input);
channel_to = config_glob_resolve(instance_to, &spec_to, min(n, spec_to.channels), mmchannel_output);
-
+
if(!channel_from || !channel_to){
rv = 1;
goto done;
@@ -356,7 +356,7 @@ static int config_line(char* line){
else{
//backend instance configuration
parser_state = instance_cfg;
-
+
//trim braces
line[strlen(line) - 1] = 0;
line++;
@@ -388,9 +388,13 @@ static int config_line(char* line){
return 1;
}
- current_instance = current_backend->create();
+ current_instance = mm_instance();
if(!current_instance){
- fprintf(stderr, "Failed to instantiate backend %s\n", line);
+ return 1;
+ }
+
+ if(current_backend->create(current_instance)){
+ fprintf(stderr, "Failed to create %s instance %s\n", line, separator);
return 1;
}