X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=tests%2Fsoundtest.c;h=e89dcf32d0a12d372b5b115eefeaa3694542f597;hb=502f8b7c14ad789df8d3e02faf4a635a67dd9bb4;hp=b1588bc2c75cd47e007b9d9a5e338dc2a01eafa4;hpb=3d92f15936ba5bc9777be115557c07260be8cabc;p=projects%2Fchimara%2Fchimara.git diff --git a/tests/soundtest.c b/tests/soundtest.c index b1588bc..e89dcf3 100644 --- a/tests/soundtest.c +++ b/tests/soundtest.c @@ -32,10 +32,15 @@ glk_main(void) nothing we can do without it, so exit. */ return; } + glk_set_window(mainwin); + glk_put_string("Copy a sound file to the current directory and rename it " + "to SND3. Supported formats: AIFF, OGG, MOD, S3M, IT, XM. Type 'play' " + "to play it.\n"); char buffer[1024]; int len; int finish = 0; + int repeat = 1; event_t ev; while(!finish) { @@ -44,7 +49,11 @@ glk_main(void) glk_select(&ev); printf("Received event:\n"); printf("Type: %d\n", ev.type); - printf("Win: %d\n", glk_window_get_rock(ev.win) ); + printf("Win: "); + if(ev.win) + printf( "%d\n", glk_window_get_rock(ev.win) ); + else + printf("NULL\n"); printf("Var1: %d\n", ev.val1); printf("Var2: %d\n", ev.val2); switch(ev.type) { @@ -58,15 +67,34 @@ glk_main(void) finish = 1; } else if(strcmp(buffer, "play") == 0) { glk_put_string("Playing sound.\n"); - if(!glk_schannel_play(sc, 3)) { + if(!glk_schannel_play_ext(sc, 3, repeat, 1)) { fprintf(stderr, "Could not start sound channel.\n"); finish = 1; } + } else if(strcmp(buffer, "stop") == 0) { + glk_put_string("Stopping sound.\n"); + glk_schannel_stop(sc); + } else if(strcmp(buffer, "repeat") == 0) { + glk_put_string("Setting repeat to "); + if(repeat == 1) { + glk_put_string("TWICE.\n"); + repeat = 2; + } else if(repeat == 2) { + glk_put_string("INFINITE.\n"); + repeat = -1; + } else if(repeat == -1) { + glk_put_string("DON'T PLAY.\n"); + repeat = 0; + } else if(repeat == 0) { + glk_put_string("ONCE.\n"); + repeat = 1; + } } else if(strcmp(buffer, "help") == 0) { - glk_put_string("Type PLAY or QUIT.\n"); + glk_put_string("Type PLAY or REPEAT or STOP or QUIT.\n"); } break; case evtype_SoundNotify: + glk_cancel_line_event(mainwin, NULL); glk_put_string("\nGot sound notify event!\n"); break; default: