void game_quit () { if (false == initialized) { LOG_FATAL ("not initialized"); } mouse_quit (); audio_quit (); keyboard_quit (); video_quit (); filepath_quit (); conf_quit (); initialized = false; }
int main (int ac, char **av) { sisy_t sisy; bank_t bank; audio_t audio; int done=0; init_tab(); memset(&sisy, 0, sizeof(sisy)); bank.pos = 0; bank.watches_size = 0; bank.name = "sisy IO"; bank.size = sizeof(sisy_IO_t); bank.data = &sisy.IO; bank.symtab = IO_symtab; bank_push(&bank); sisy_getopt(ac, av); instru_path[instru_path_size] = Malloc(strlen(getenv("HOME")) + strlen("/.sisy/") + 200); strcat(instru_path[instru_path_size], getenv("HOME")); strcat(instru_path[instru_path_size++], "/.sisy/"); instru_path[instru_path_size++] = "/usr/share/sisy/"; sisy.buffer = buffer_create(); printf("Init midi: "); if(sisy_midi_init(&sisy, midi_device) < 0) { fprintf(stderr, "ERROR: got some troubles while opening midi device %s\n", midi_device); goto error; } printf("Ok\nInit audio: "); if(audio_init(&audio, audio_device) < 0) { fprintf(stderr, "ERROR: got some troubles while opening audio device %s\n", audio_device); goto error; } printf("Ok\nEnter in main loop...\n"); while(!done) { int t; done=1; ck_err(buffer_zero(sisy.buffer)<0); // printf("%d\r", midi_timestamp_get()); for(t=0; t<sisy.nb_tracks; t++) { sisy_track_t *track=&sisy.tracks[t]; if(!track->EOT) { done=0;//We are not done ! ck_err(bank_push(&track->midi.bank)); ck_err(buffer_zero(track->buffer) < 0); ck_err(sisy_track_process(track) < 0); ck_err(bank_pop_check(&track->midi.bank)); ck_err(buffer_mix(track->buffer, sisy.buffer)); } } /* if(!is_buffer_flat(sisy.buffer)) */ /* printf("sisy: buffer qui bouge\n"); */ ck_err(audio_write(&audio, sisy.buffer)<0); } /* ck_err(bank_pop_check(&sisy.midi.bank)); */ /* ck_err(bank_pop_check(&bank)); */ audio_quit(&audio); return 0; error: return -1; }