Fix Bug #33 Can't save midi attachement to trigger / Stop
authorAlexander Koenig <alex@lisas.de>
Sun, 26 Jan 2014 19:29:41 +0000 (20:29 +0100)
committerAlexander Koenig <alex@lisas.de>
Sun, 26 Jan 2014 19:29:41 +0000 (20:29 +0100)
http://www-stud.hs-esslingen.de/bugzilla/show_bug.cgi?id=33

src/tX_global.h
src/tX_vtt.cc

index 683584d8431df1def30091d656b19410caf8f32e..83f30f20c89d3a3b2ec75946e2b1e838d3a2ebd4 100644 (file)
@@ -223,10 +223,12 @@ extern int _store_compress_xml;
 #define store_float_id(s, i, id); tX_store((sizeof(i)>4) ? "%s<%s id=\"%i\">%lf</%s>\n" : "%s<%s id=\"%i\">%f</%s>\n", indent, s, id, i, s);
 #define store_bool_id(s, i, id); tX_store("%s<%s id=\"%i\">%s</%s>\n", indent, s, id, i ? "true" : "false", s);
 
+#define store_id_sp(name, sp); { tX_store("%s<%s ", indent, name); sp.store_meta(rc, rz); tX_store("/>\n"); }
 #define store_int_sp(name, i, sp); { tX_store("%s<%s ", indent, name); sp.store_meta(rc, rz); tX_store(">%i</%s>\n", (int) i, name); }
 #define store_float_sp(name, i, sp); { tX_store("%s<%s ", indent, name); sp.store_meta(rc, rz); tX_store((sizeof(i)>4) ? ">%lf</%s>\n" : ">%f</%s>\n" , i, name); }
 #define store_bool_sp(name, i, sp); { tX_store("%s<%s ", indent, name); sp.store_meta(rc, rz); tX_store(">%s</%s>\n", i ? "true" : "false", name); }
 
+#define restore_sp_id(s, sp); if ((!elementFound) && (!xmlStrcmp(cur->name, (const xmlChar *) s))) { elementFound=1; sp.restore_meta(cur); }
 #define restore_int_id(s, i, sp, init); if ((!elementFound) && (!xmlStrcmp(cur->name, (const xmlChar *) s))) { elementFound=1; if (xmlNodeListGetString(doc, cur->xmlChildrenNode, 1)) { sscanf((char *) xmlNodeListGetString(doc, cur->xmlChildrenNode, 1), "%i", &i);  init; } sp.restore_meta(cur); }
 #define restore_float_id(s, i, sp, init); if ((!elementFound) && (!xmlStrcmp(cur->name, (const xmlChar *) s))) { elementFound=1; if  (xmlNodeListGetString(doc, cur->xmlChildrenNode, 1)) {sscanf((char *) xmlNodeListGetString(doc, cur->xmlChildrenNode, 1), "%lf", &dvalue); i=dvalue; init; } sp.restore_meta(cur);}
 #define restore_bool_id(s, i, sp, init); if ((!elementFound) && (!xmlStrcmp(cur->name, (const xmlChar *) s))) { elementFound=1; if (xmlNodeListGetString(doc, cur->xmlChildrenNode, 1)) {if (xmlStrcmp(xmlNodeListGetString(doc, cur->xmlChildrenNode, 1),  (const xmlChar *) "true")==0) i=true; else i=false; init; } sp.restore_meta(cur);}
index cbcb7578465d281900357b87eec77756deacbcb9..bb44cae9d3d7c0f5ccf56cba0bb7ba370d71066c 100644 (file)
@@ -1242,9 +1242,9 @@ int  vtt_class :: save(FILE *rc, gzFile rz, char *indent) {
        store_float_sp("echo_pan", ec_pan, sp_ec_pan);
        store_float_sp("echo_volume", ec_volume, sp_ec_volume);
        
-       store_id("speed", sp_speed.get_persistence_id());
-       store_id("trigger", sp_trigger.get_persistence_id());
-       store_id("spin", sp_spin.get_persistence_id());
+       store_id_sp("speed", sp_speed);
+       store_id_sp("trigger", sp_trigger);
+       store_id_sp("spin", sp_spin);
        
        if (x_par) {
                store_int("x_axis_mapping", x_par->get_persistence_id());
@@ -1360,9 +1360,9 @@ int vtt_class :: load(xmlDocPtr doc, xmlNodePtr node) {
                        restore_float_id("echo_pan", ec_pan, sp_ec_pan, ec_set_pan(ec_pan));
                        restore_float_id("echo_volume", ec_volume, sp_ec_volume, ec_set_volume(ec_volume));             
                
-                       restore_id("speed", sp_speed);  
-                       restore_id("trigger", sp_trigger);
-                       restore_id("spin", sp_spin);
+                       restore_sp_id("speed", sp_speed);       
+                       restore_sp_id("trigger", sp_trigger);
+                       restore_sp_id("spin", sp_spin);
        
                        restore_int("x_axis_mapping", xpar_id);
                        restore_int("y_axis_mapping", ypar_id);