- fixed hang with skill sound on game start.

This waits inside code where S_Update wasn't called. To make things clearer the waiting loop was moved closer to where it gets played.
This commit is contained in:
Christoph Oelckers 2019-12-16 09:19:04 +01:00
parent 938db6d35d
commit b1b33ef231
4 changed files with 9 additions and 12 deletions

View file

@ -568,10 +568,15 @@ void GameInterface::StartGame(FGameStartup& gs)
} }
ud.m_player_skill = gs.Skill + 1; ud.m_player_skill = gs.Skill + 1;
if (menu_sounds) if (menu_sounds && skillsound >= 0 && SoundEnabled())
{ {
ud.skill_voice = skillsound; S_PlaySound(skillsound, CHAN_UI);
S_PlaySound(skillsound);
while (S_CheckSoundPlaying(skillsound))
{
S_Update();
gameHandleEvents();
}
} }
ud.m_respawn_monsters = (gs.Skill == 3); ud.m_respawn_monsters = (gs.Skill == 3);
ud.m_monsters_off = ud.monsters_off = 0; ud.m_monsters_off = ud.monsters_off = 0;

View file

@ -157,7 +157,7 @@ typedef struct {
int32_t m_respawn_items,m_respawn_monsters,m_respawn_inventory,m_monsters_off; int32_t m_respawn_items,m_respawn_monsters,m_respawn_inventory,m_monsters_off;
int32_t ffire,m_player_skill,m_level_number,m_volume_number,multimode; int32_t ffire,m_player_skill,m_level_number,m_volume_number,multimode;
int32_t player_skill,level_number,volume_number,marker; int32_t player_skill,level_number,volume_number,marker;
int32_t music_episode, music_level, skill_voice; int32_t music_episode, music_level;
int32_t playerbest; int32_t playerbest;

View file

@ -1320,12 +1320,6 @@ void G_NewGame(int volumeNum, int levelNum, int skillNum)
gameHandleEvents(); gameHandleEvents();
if (ud.skill_voice > 0 && SoundEnabled())
{
while (S_CheckSoundPlaying(ud.skill_voice))
gameHandleEvents();
}
ready2send = 0; ready2send = 0;
if (m_recstat != 2 && ud.last_level != -1 && !VM_OnEventWithReturn(EVENT_EXITGAMESCREEN, g_player[myconnectindex].ps->i, myconnectindex, 0) if (m_recstat != 2 && ud.last_level != -1 && !VM_OnEventWithReturn(EVENT_EXITGAMESCREEN, g_player[myconnectindex].ps->i, myconnectindex, 0)
@ -1339,7 +1333,6 @@ void G_NewGame(int volumeNum, int levelNum, int skillNum)
ud.level_number = levelNum; ud.level_number = levelNum;
ud.player_skill = skillNum; ud.player_skill = skillNum;
ud.secretlevel = 0; ud.secretlevel = 0;
ud.skill_voice = -1;
ud.volume_number = volumeNum; ud.volume_number = volumeNum;
// we don't want the intro to play after the multiplayer setup screen // we don't want the intro to play after the multiplayer setup screen

View file

@ -313,7 +313,6 @@ int32_t G_LoadPlayer(FSaveGameNode *sv)
ud.level_number = level; ud.level_number = level;
ud.player_skill = skill; ud.player_skill = skill;
ud.secretlevel = 0; ud.secretlevel = 0;
ud.skill_voice = -1;
ud.volume_number = volume; ud.volume_number = volume;
#ifdef EDUKE32_TOUCH_DEVICES #ifdef EDUKE32_TOUCH_DEVICES