diff --git a/src/d_main.c b/src/d_main.c index ed28c2228..5853fccf0 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -667,6 +667,7 @@ void D_SRB2Loop(void) // consoleplayer -> displayplayer (hear sounds from viewpoint) S_UpdateSounds(); // move positional sounds + S_UpdateClosedCaptions(); // check for media change, loop music.. I_UpdateCD(); diff --git a/src/s_sound.c b/src/s_sound.c index 8e4e7715d..2f88349f1 100644 --- a/src/s_sound.c +++ b/src/s_sound.c @@ -860,7 +860,6 @@ static INT32 actualmidimusicvolume; void S_UpdateSounds(void) { INT32 audible, cnum, volume, sep, pitch; - UINT8 i; channel_t *c; listener_t listener; @@ -1017,28 +1016,30 @@ void S_UpdateSounds(void) notinlevel: I_UpdateSound(); +} +void S_UpdateClosedCaptions(void) +{ + UINT8 i; + boolean gamestopped = (paused || P_AutoPause()); + for (i = 0; i < NUMCAPTIONS; i++) // update captions { - boolean gamestopped = (paused || P_AutoPause()); - for (i = 0; i < NUMCAPTIONS; i++) // update captions + if (!closedcaptions[i].s) + continue; + + if (i == 0 && (closedcaptions[0].s-S_sfx == sfx_None) && gamestopped) + continue; + + if (!(--closedcaptions[i].t)) { - if (!closedcaptions[i].s) - continue; - - if (i == 0 && (closedcaptions[0].s-S_sfx == sfx_None) && gamestopped) - continue; - - if (!(--closedcaptions[i].t)) - { - closedcaptions[i].c = NULL; - closedcaptions[i].s = NULL; - } - else if (closedcaptions[i].c && !I_SoundIsPlaying(closedcaptions[i].c->handle)) - { - closedcaptions[i].c = NULL; - if (closedcaptions[i].t > CAPTIONFADETICS) - closedcaptions[i].t = CAPTIONFADETICS; - } + closedcaptions[i].c = NULL; + closedcaptions[i].s = NULL; + } + else if (closedcaptions[i].c && !I_SoundIsPlaying(closedcaptions[i].c->handle)) + { + closedcaptions[i].c = NULL; + if (closedcaptions[i].t > CAPTIONFADETICS) + closedcaptions[i].t = CAPTIONFADETICS; } } } diff --git a/src/s_sound.h b/src/s_sound.h index d1551df0b..f9bbf6767 100644 --- a/src/s_sound.h +++ b/src/s_sound.h @@ -303,6 +303,7 @@ boolean S_FadeOutStopMusic(UINT32 ms); // Updates music & sounds // void S_UpdateSounds(void); +void S_UpdateClosedCaptions(void); FUNCMATH fixed_t S_CalculateSoundDistance(fixed_t px1, fixed_t py1, fixed_t pz1, fixed_t px2, fixed_t py2, fixed_t pz2);