From: Philip Chimento Date: Wed, 18 Jan 2012 12:59:59 +0000 (+0100) Subject: Merge branch 'new-sound-api' X-Git-Tag: v0.9~47 X-Git-Url: https://git.stderr.nl/gitweb?a=commitdiff_plain;h=1461483626f28b52f8f9f3cc350f9cb330579285;hp=-c;p=projects%2Fchimara%2Fchimara.git Merge branch 'new-sound-api' Conflicts: docs/reference/chimara-docs.sgml --- 1461483626f28b52f8f9f3cc350f9cb330579285 diff --combined docs/reference/chimara-sections.txt index 809f3a5,74e9e6a..994f21b --- a/docs/reference/chimara-sections.txt +++ b/docs/reference/chimara-sections.txt @@@ -22,12 -22,12 +22,12 @@@ chimara_glk_set_css_from_strin chimara_glk_run chimara_glk_stop chimara_glk_wait +chimara_glk_unload_plugin chimara_glk_get_running chimara_glk_feed_char_input chimara_glk_feed_line_input chimara_glk_is_char_input_pending chimara_glk_is_line_input_pending -chimara_glk_get_num_tag_names chimara_glk_get_tag chimara_glk_get_tag_names chimara_glk_update_style @@@ -130,6 -130,7 +130,7 @@@ gestalt_MouseInpu gestalt_Timer gestalt_Graphics gestalt_DrawImage + gestalt_Sound2 gestalt_Sound gestalt_SoundVolume gestalt_SoundNotify @@@ -494,6 -495,7 +495,7 @@@ GLK_MODULE_IMAG glk-sound-channels Creating and Destroying Sound Channels glk_schannel_create + glk_schannel_create_ext glk_schannel_destroy @@@ -502,8 -504,12 +504,12 @@@ Playing Sounds glk_schannel_play glk_schannel_play_ext + glk_schannel_play_multi glk_schannel_stop + glk_schannel_pause + glk_schannel_unpause glk_schannel_set_volume + glk_schannel_set_volume_ext glk_sound_load_hint @@@ -518,6 -524,7 +524,7 @@@ glk_schannel_get_roc glk-sound-testing Testing for Sound Capabilities GLK_MODULE_SOUND + GLK_MODULE_SOUND2
diff --combined libchimara/gi_dispa.c index 4564ae4,f38eff0..f0099b9 --- a/libchimara/gi_dispa.c +++ b/libchimara/gi_dispa.c @@@ -1,4 -1,4 +1,4 @@@ - /* gi_dispa.c: Dispatch layer for Glk API, version 0.7.2. + /* gi_dispa.c: Dispatch layer for Glk API, version 0.7.3. Designed by Andrew Plotkin http://eblong.com/zarf/glk/ @@@ -49,6 -49,7 +49,7 @@@ static gidispatch_intconst_t intconstan { "evtype_Redraw", (6) }, { "evtype_SoundNotify", (7) }, { "evtype_Timer", (1) }, + { "evtype_VolumeNotify", (9) }, { "filemode_Read", (0x02) }, { "filemode_ReadWrite", (0x03) }, @@@ -80,6 -81,7 +81,7 @@@ { "gestalt_LineTerminators", (18) }, { "gestalt_MouseInput", (4) }, { "gestalt_Sound", (8) }, + { "gestalt_Sound2", (21) }, { "gestalt_SoundMusic", (13) }, { "gestalt_SoundNotify", (10) }, { "gestalt_SoundVolume", (9) }, @@@ -260,6 -262,13 +262,13 @@@ static gidispatch_function_t function_t { 0x00FA, glk_schannel_stop, "schannel_stop" }, { 0x00FB, glk_schannel_set_volume, "schannel_set_volume" }, { 0x00FC, glk_sound_load_hint, "sound_load_hint" }, + #ifdef GLK_MODULE_SOUND2 + { 0x00F4, glk_schannel_create_ext, "schannel_create_ext" }, + { 0x00F7, glk_schannel_play_multi, "schannel_play_multi" }, + { 0x00FD, glk_schannel_set_volume_ext, "schannel_set_volume_ext" }, + { 0x00FE, glk_schannel_pause, "schannel_pause" }, + { 0x00FF, glk_schannel_unpause, "schannel_unpause" }, + #endif /* GLK_MODULE_SOUND2 */ #endif /* GLK_MODULE_SOUND */ #ifdef GLK_MODULE_HYPERLINKS { 0x0100, glk_set_hyperlink, "set_hyperlink" }, @@@ -426,7 -435,7 +435,7 @@@ char *gidispatch_prototype(glui32 funcn case 0x0042: /* stream_open_file */ return "4QcIuIu:Qb"; case 0x0043: /* stream_open_memory */ - return "4&+#!CnIuIu:Qb"; + return "4&#!CnIuIu:Qb"; case 0x0044: /* stream_close */ return "2Qb<[2IuIu]:"; case 0x0045: /* stream_set_position */ @@@ -544,6 -553,19 +553,19 @@@ return "2QdIu:"; case 0x00FC: /* sound_load_hint */ return "2IuIu:"; + + #ifdef GLK_MODULE_SOUND2 + case 0x00F4: /* schannel_create_ext */ + return "3IuIu:Qd"; + case 0x00F7: /* schannel_play_multi */ + return "4>+#Qd>+#IuIu:Iu"; + case 0x00FD: /* schannel_set_volume_ext */ + return "4QdIuIuIu:"; + case 0x00FE: /* schannel_pause */ + return "1Qd:"; + case 0x00FF: /* schannel_unpause */ + return "1Qd:"; + #endif /* GLK_MODULE_SOUND2 */ #endif /* GLK_MODULE_SOUND */ #ifdef GLK_MODULE_HYPERLINKS @@@ -585,7 -607,7 +607,7 @@@ case 0x0138: /* stream_open_file_uni */ return "4QcIuIu:Qb"; case 0x0139: /* stream_open_memory_uni */ - return "4&+#!IuIuIu:Qb"; + return "4&#!IuIuIu:Qb"; case 0x0140: /* request_char_event_uni */ return "1Qa:"; case 0x0141: /* request_line_event_uni */ @@@ -1081,6 -1103,31 +1103,31 @@@ void gidispatch_call(glui32 funcnum, gl case 0x00FC: /* sound_load_hint */ glk_sound_load_hint(arglist[0].uint, arglist[1].uint); break; + + #ifdef GLK_MODULE_SOUND2 + case 0x00F4: /* schannel_create_ext */ + arglist[3].opaqueref = glk_schannel_create_ext(arglist[0].uint, arglist[1].uint); + break; + case 0x00F7: /* schannel_play_multi */ + if (arglist[0].ptrflag && arglist[3].ptrflag) + arglist[8].uint = glk_schannel_play_multi(arglist[1].array, arglist[2].uint, arglist[4].array, arglist[5].uint, arglist[6].uint); + else if (arglist[0].ptrflag) + arglist[6].uint = glk_schannel_play_multi(arglist[1].array, arglist[2].uint, NULL, 0, arglist[4].uint); + else if (arglist[1].ptrflag) + arglist[6].uint = glk_schannel_play_multi(NULL, 0, arglist[2].array, arglist[3].uint, arglist[4].uint); + else + arglist[4].uint = glk_schannel_play_multi(NULL, 0, NULL, 0, arglist[2].uint); + break; + case 0x00FD: /* schannel_set_volume_ext */ + glk_schannel_set_volume_ext(arglist[0].opaqueref, arglist[1].uint, arglist[2].uint, arglist[3].uint); + break; + case 0x00FE: /* schannel_pause */ + glk_schannel_pause(arglist[0].opaqueref); + break; + case 0x00FF: /* schannel_unpause */ + glk_schannel_unpause(arglist[0].opaqueref); + break; + #endif /* GLK_MODULE_SOUND2 */ #endif /* GLK_MODULE_SOUND */ #ifdef GLK_MODULE_HYPERLINKS