Browse Source

made pause / unpause safer and fixed issue with autopause when losing focus during the loading screen

pull/2388/head
Jonathan Bergeron 5 years ago committed by Anders Jenbo
parent
commit
57d445d32f
  1. 42
      Source/diablo.cpp
  2. 1
      Source/diablo.h
  3. 6
      Source/miniwin/misc_msg.cpp

42
Source/diablo.cpp

@ -1749,29 +1749,37 @@ bool MinimizePaused = false;
void diablo_focus_pause()
{
if (gbIsMultiplayer) {
if (gbIsMultiplayer || MinimizePaused) {
return;
}
if (!MinimizePaused) {
GameWasAlreadyPaused = PauseMode != 0;
GameWasAlreadyPaused = PauseMode != 0;
if (!GameWasAlreadyPaused) {
PauseMode = 2;
sound_stop();
track_repeat_walk(false);
}
if (!GameWasAlreadyPaused) {
PauseMode = 2;
sound_stop();
track_repeat_walk(false);
}
music_mute();
} else {
if (!GameWasAlreadyPaused) {
PauseMode = 0;
}
music_mute();
MinimizePaused = true;
}
music_unmute();
void diablo_focus_unpause()
{
if (gbIsMultiplayer || !MinimizePaused)
{
return;
}
MinimizePaused = !MinimizePaused;
if (!GameWasAlreadyPaused) {
PauseMode = 0;
}
music_unmute();
MinimizePaused = false;
}
bool PressEscKey()
@ -2101,6 +2109,10 @@ void LoadGameLevel(bool firstflag, lvl_entry lvldir)
else
music_start(leveltype);
if (MinimizePaused) {
music_mute();
}
while (!IncProgress())
;

1
Source/diablo.h

@ -76,6 +76,7 @@ int DiabloMain(int argc, char **argv);
bool TryIconCurs();
void diablo_pause_game();
void diablo_focus_pause();
void diablo_focus_unpause();
bool PressEscKey();
void DisableInputWndProc(uint32_t uMsg, int32_t wParam, int32_t lParam);
void LoadGameLevel(bool firstflag, lvl_entry lvldir);

6
Source/miniwin/misc_msg.cpp

@ -567,10 +567,10 @@ bool FetchMessage(tagMSG *lpMsg)
break;
case SDL_WINDOWEVENT_FOCUS_LOST:
diablo_focus_pause();
break;
case SDL_WINDOWEVENT_FOCUS_GAINED:
if (gbRunGameResult) {
diablo_focus_pause();
}
diablo_focus_unpause();
break;
default:

Loading…
Cancel
Save