fix gc bug
This commit is contained in:
@@ -244,6 +244,7 @@ JSC_CCALL(midi_parse,
|
|||||||
JS_ROOT(evt, JS_NULL);
|
JS_ROOT(evt, JS_NULL);
|
||||||
int idx = 0;
|
int idx = 0;
|
||||||
|
|
||||||
|
JSValue tmp;
|
||||||
for (tml_message *msg = midi; msg; msg = msg->next) {
|
for (tml_message *msg = midi; msg; msg = msg->next) {
|
||||||
evt.val = JS_NewObject(js);
|
evt.val = JS_NewObject(js);
|
||||||
JS_SetPropertyStr(js, evt.val, "time", JS_NewInt32(js, msg->time));
|
JS_SetPropertyStr(js, evt.val, "time", JS_NewInt32(js, msg->time));
|
||||||
@@ -251,29 +252,35 @@ JSC_CCALL(midi_parse,
|
|||||||
|
|
||||||
switch (msg->type) {
|
switch (msg->type) {
|
||||||
case TML_NOTE_ON:
|
case TML_NOTE_ON:
|
||||||
JS_SetPropertyStr(js, evt.val, "type", JS_NewString(js, "note_on"));
|
tmp = JS_NewString(js, "note_on");
|
||||||
|
JS_SetPropertyStr(js, evt.val, "type", tmp);
|
||||||
JS_SetPropertyStr(js, evt.val, "key", JS_NewInt32(js, msg->key));
|
JS_SetPropertyStr(js, evt.val, "key", JS_NewInt32(js, msg->key));
|
||||||
JS_SetPropertyStr(js, evt.val, "velocity", JS_NewInt32(js, msg->velocity));
|
JS_SetPropertyStr(js, evt.val, "velocity", JS_NewInt32(js, msg->velocity));
|
||||||
break;
|
break;
|
||||||
case TML_NOTE_OFF:
|
case TML_NOTE_OFF:
|
||||||
JS_SetPropertyStr(js, evt.val, "type", JS_NewString(js, "note_off"));
|
tmp = JS_NewString(js, "note_off");
|
||||||
|
JS_SetPropertyStr(js, evt.val, "type", tmp);
|
||||||
JS_SetPropertyStr(js, evt.val, "key", JS_NewInt32(js, msg->key));
|
JS_SetPropertyStr(js, evt.val, "key", JS_NewInt32(js, msg->key));
|
||||||
break;
|
break;
|
||||||
case TML_CONTROL_CHANGE:
|
case TML_CONTROL_CHANGE:
|
||||||
JS_SetPropertyStr(js, evt.val, "type", JS_NewString(js, "control"));
|
tmp = JS_NewString(js, "control");
|
||||||
|
JS_SetPropertyStr(js, evt.val, "type", tmp);
|
||||||
JS_SetPropertyStr(js, evt.val, "control", JS_NewInt32(js, msg->control));
|
JS_SetPropertyStr(js, evt.val, "control", JS_NewInt32(js, msg->control));
|
||||||
JS_SetPropertyStr(js, evt.val, "value", JS_NewInt32(js, msg->control_value));
|
JS_SetPropertyStr(js, evt.val, "value", JS_NewInt32(js, msg->control_value));
|
||||||
break;
|
break;
|
||||||
case TML_PROGRAM_CHANGE:
|
case TML_PROGRAM_CHANGE:
|
||||||
JS_SetPropertyStr(js, evt.val, "type", JS_NewString(js, "program"));
|
tmp = JS_NewString(js, "program");
|
||||||
|
JS_SetPropertyStr(js, evt.val, "type", tmp);
|
||||||
JS_SetPropertyStr(js, evt.val, "program", JS_NewInt32(js, msg->program));
|
JS_SetPropertyStr(js, evt.val, "program", JS_NewInt32(js, msg->program));
|
||||||
break;
|
break;
|
||||||
case TML_PITCH_BEND:
|
case TML_PITCH_BEND:
|
||||||
JS_SetPropertyStr(js, evt.val, "type", JS_NewString(js, "pitch_bend"));
|
tmp = JS_NewString(js, "pitch_bend");
|
||||||
|
JS_SetPropertyStr(js, evt.val, "type", tmp);
|
||||||
JS_SetPropertyStr(js, evt.val, "pitch_bend", JS_NewInt32(js, msg->pitch_bend));
|
JS_SetPropertyStr(js, evt.val, "pitch_bend", JS_NewInt32(js, msg->pitch_bend));
|
||||||
break;
|
break;
|
||||||
case TML_SET_TEMPO:
|
case TML_SET_TEMPO:
|
||||||
JS_SetPropertyStr(js, evt.val, "type", JS_NewString(js, "tempo"));
|
tmp = JS_NewString(js, "tempo");
|
||||||
|
JS_SetPropertyStr(js, evt.val, "type", tmp);
|
||||||
JS_SetPropertyStr(js, evt.val, "tempo", JS_NewInt32(js, tml_get_tempo_value(msg)));
|
JS_SetPropertyStr(js, evt.val, "tempo", JS_NewInt32(js, tml_get_tempo_value(msg)));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
Reference in New Issue
Block a user