diff options
author | Wohlstand <admin@wohlnet.ru> | 2017-11-10 02:40:38 +0300 |
---|---|---|
committer | Wohlstand <admin@wohlnet.ru> | 2017-11-10 02:40:38 +0300 |
commit | 0b64e5b1982c4ce09b48c2ac927ace7505d7f3a7 (patch) | |
tree | 097bb11ce72aa692becd746b1a38108a082e2803 /utils | |
parent | 3680c0ac9d38d6ea105e53d34a79e7cafaf2408b (diff) | |
download | libADLMIDI-0b64e5b1982c4ce09b48c2ac927ace7505d7f3a7.tar.gz libADLMIDI-0b64e5b1982c4ce09b48c2ac927ace7505d7f3a7.tar.bz2 libADLMIDI-0b64e5b1982c4ce09b48c2ac927ace7505d7f3a7.zip |
Ability to quit from Classic ADLMIDI under DOS by ESC key hit
Diffstat (limited to 'utils')
-rw-r--r-- | utils/adlmidi-2/midiplay.cc | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/utils/adlmidi-2/midiplay.cc b/utils/adlmidi-2/midiplay.cc index 843f4d7..1d5e249 100644 --- a/utils/adlmidi-2/midiplay.cc +++ b/utils/adlmidi-2/midiplay.cc @@ -1578,7 +1578,9 @@ int main(int argc, char **argv) std::fflush(stderr); signal(SIGINT, TidyupAndExit); - __djgpp_set_ctrl_c(1); + #ifdef __DJGPP__ + signal(SIGQUIT, TidyupAndExit); + #endif if(argc < 2 || std::string(argv[1]) == "--help" || std::string(argv[1]) == "-h") { @@ -1863,8 +1865,11 @@ int main(int argc, char **argv) #ifdef __DJGPP__ double tick_delay = 0.0; #endif + + #ifndef __DJGPP__ //sample_buf.resize(1024); short buff[1024]; + #endif UI.TetrisLaunched = true; while(!QuitFlag) @@ -1959,6 +1964,13 @@ int main(int argc, char **argv) const unsigned long CurTimer = BIOStimer; const double eat_delay = (CurTimer - PrevTimer) / (double)NewTimerFreq; PrevTimer = CurTimer; + + if(kbhit()) + { // Quit on ESC key! + int c = getch(); + if(c == 27) + QuitFlag = true; + } #endif //double nextdelay = @@ -1991,6 +2003,9 @@ int main(int argc, char **argv) //tick_delay = nextdelay; } + //Shut up all sustaining notes + adl_panic(myDevice); + #ifdef __DJGPP__ // Fix the skewed clock and reset BIOS tick rate _farpokel(_dos_ds, 0x46C, BIOStimer_begin + @@ -2002,9 +2017,10 @@ int main(int argc, char **argv) outportb(0x40, 0); //enable(); + UI.GotoXY(0, 0); + UI.ShowCursor(); UI.Color(7); clrscr(); - std::printf("Bye!\n"); #else #ifdef _WIN32 WindowsAudio::Close(); |