diff --git a/src/cmd.c b/src/cmd.c index 04b629017..f464b5243 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -6331,6 +6331,8 @@ end_of_input(void) #endif if (gp.program_state.something_worth_saving) (void) dosave0(); + if (soundprocs.sound_exit_nhsound) + (*soundprocs.sound_exit_nhsound)("end_of_input"); if (iflags.window_inited) exit_nhwindows((char *) 0); clearlocks(); diff --git a/src/end.c b/src/end.c index c81fb28ac..3d9b7c7f9 100644 --- a/src/end.c +++ b/src/end.c @@ -359,6 +359,9 @@ done2(void) #ifndef NO_SIGNAL (void) signal(SIGINT, (SIG_RET_TYPE) done1); #endif + if (soundprocs.sound_exit_nhsound) + (*soundprocs.sound_exit_nhsound)("done2"); + exit_nhwindows((char *) 0); NH_abort(); } else if (c == 'q') @@ -608,6 +611,8 @@ panic VA_DECL(const char *, str) if (iflags.window_inited) { raw_print("\r\nOops..."); wait_synch(); /* make sure all pending output gets flushed */ + if (soundprocs.sound_exit_nhsound) + (*soundprocs.sound_exit_nhsound)("panic"); exit_nhwindows((char *) 0); iflags.window_inited = 0; /* they're gone; force raw_print()ing */ } @@ -1668,6 +1673,11 @@ really_done(int how) destroy_nhwindow(endwin); dump_close_log(); + + /* shut down soundlib */ + if (soundprocs.sound_exit_nhsound) + (*soundprocs.sound_exit_nhsound)("really_done"); + /* * "So when I die, the first thing I will see in Heaven is a score list?" * diff --git a/src/save.c b/src/save.c index e9ef617ab..c378d9b52 100644 --- a/src/save.c +++ b/src/save.c @@ -63,6 +63,9 @@ dosave(void) #endif if (dosave0()) { u.uhp = -1; /* universal game's over indicator */ + if (soundprocs.sound_exit_nhsound) + (*soundprocs.sound_exit_nhsound)("dosave"); + /* make sure they see the Saving message */ display_nhwindow(WIN_MESSAGE, TRUE); exit_nhwindows("Be seeing you...");