Fixed waiting on extra keypress to exit on Windows and onOverlayUpdated() not being called for every video frame.

This commit is contained in:
Scott Duensing 2020-03-15 16:28:33 -05:00
parent 4f7c0c38b3
commit 9e943584aa
2 changed files with 34 additions and 32 deletions

View file

@ -659,7 +659,7 @@ int main(int argc, char *argv[]) {
ap_free(&parser); ap_free(&parser);
#ifdef _WIN32 #ifdef _WIN32
getchar(); if (!_confNoConsole) getchar();
#endif #endif
return 0; return 0;

View file

@ -2354,6 +2354,7 @@ void singe(SDL_Window *window, SDL_Renderer *renderer) {
lua_register(_luaContext, "discAudio", apiDiscAudio); lua_register(_luaContext, "discAudio", apiDiscAudio);
lua_register(_luaContext, "discChangeSpeed", apiDiscChangeSpeed); lua_register(_luaContext, "discChangeSpeed", apiDiscChangeSpeed);
lua_register(_luaContext, "discGetFrame", apiDiscGetFrame); lua_register(_luaContext, "discGetFrame", apiDiscGetFrame);
lua_register(_luaContext, "discGetState", apiDiscGetState);
lua_register(_luaContext, "discPause", apiDiscPause); lua_register(_luaContext, "discPause", apiDiscPause);
lua_register(_luaContext, "discPauseAtFrame", apiDiscPauseAtFrame); lua_register(_luaContext, "discPauseAtFrame", apiDiscPauseAtFrame);
lua_register(_luaContext, "discPlay", apiDiscPlay); lua_register(_luaContext, "discPlay", apiDiscPlay);
@ -2374,19 +2375,35 @@ void singe(SDL_Window *window, SDL_Renderer *renderer) {
lua_register(_luaContext, "fontSelect", apiFontSelect); lua_register(_luaContext, "fontSelect", apiFontSelect);
lua_register(_luaContext, "fontToSprite", apiFontToSprite); lua_register(_luaContext, "fontToSprite", apiFontToSprite);
lua_register(_luaContext, "keyboardGetMode", apiKeyboardGetMode);
lua_register(_luaContext, "keyboardSetMode", apiKeyboardSetMode);
lua_register(_luaContext, "mouseEnable", apiMouseEnable);
lua_register(_luaContext, "mouseDisable", apiMouseDisable);
lua_register(_luaContext, "mouseGetPosition", apiMouseGetPosition); lua_register(_luaContext, "mouseGetPosition", apiMouseGetPosition);
lua_register(_luaContext, "mouseHowMany", apiMouseHowMany);
lua_register(_luaContext, "mouseSetMode", apiMouseSetMode);
lua_register(_luaContext, "overlayClear", apiOverlayClear); lua_register(_luaContext, "overlayClear", apiOverlayClear);
lua_register(_luaContext, "overlayGetHeight", apiOverlayGetHeight); lua_register(_luaContext, "overlayGetHeight", apiOverlayGetHeight);
lua_register(_luaContext, "overlayGetWidth", apiOverlayGetWidth); lua_register(_luaContext, "overlayGetWidth", apiOverlayGetWidth);
lua_register(_luaContext, "overlayPrint", apiOverlayPrint); lua_register(_luaContext, "overlayPrint", apiOverlayPrint);
lua_register(_luaContext, "singeGetPauseFlag", apiSingeGetPauseFlag);
lua_register(_luaContext, "singeSetPauseFlag", apiSingeSetPauseFlag);
lua_register(_luaContext, "singeEnablePauseKey", apiSingeEnablePauseKey);
lua_register(_luaContext, "singeDisablePauseKey", apiSingeDisablePauseKey);
lua_register(_luaContext, "singeQuit", apiSingeQuit);
lua_register(_luaContext, "singeVersion", apiSingeVersion);
lua_register(_luaContext, "singeSetGameName", apiSingeSetGameName);
lua_register(_luaContext, "singeGetScriptPath", apiSingeGetScriptPath);
lua_register(_luaContext, "soundLoad", apiSoundLoad); lua_register(_luaContext, "soundLoad", apiSoundLoad);
lua_register(_luaContext, "soundPlay", apiSoundPlay); lua_register(_luaContext, "soundPlay", apiSoundPlay);
lua_register(_luaContext, "soundPause", apiSoundPause); // rdg lua_register(_luaContext, "soundPause", apiSoundPause);
lua_register(_luaContext, "soundResume", apiSoundResume); // lua_register(_luaContext, "soundResume", apiSoundResume);
lua_register(_luaContext, "soundIsPlaying", apiSoundIsPlaying); // lua_register(_luaContext, "soundIsPlaying", apiSoundIsPlaying);
lua_register(_luaContext, "soundStop", apiSoundStop); // lua_register(_luaContext, "soundStop", apiSoundStop);
lua_register(_luaContext, "soundSetVolume", apiSoundSetVolume); lua_register(_luaContext, "soundSetVolume", apiSoundSetVolume);
lua_register(_luaContext, "soundGetVolume", apiSoundGetVolume); lua_register(_luaContext, "soundGetVolume", apiSoundGetVolume);
lua_register(_luaContext, "soundFullStop", apiSoundFullStop); lua_register(_luaContext, "soundFullStop", apiSoundFullStop);
@ -2401,23 +2418,6 @@ void singe(SDL_Window *window, SDL_Renderer *renderer) {
lua_register(_luaContext, "vldpGetWidth", apiVldpGetWidth); lua_register(_luaContext, "vldpGetWidth", apiVldpGetWidth);
lua_register(_luaContext, "vldpSetVerbose", apiVldpVerbose); lua_register(_luaContext, "vldpSetVerbose", apiVldpVerbose);
// by RDG2010
lua_register(_luaContext, "keyboardGetMode", apiKeyboardGetMode);
lua_register(_luaContext, "keyboardSetMode", apiKeyboardSetMode);
lua_register(_luaContext, "mouseEnable", apiMouseEnable);
lua_register(_luaContext, "mouseDisable", apiMouseDisable);
lua_register(_luaContext, "mouseSetMode", apiMouseSetMode);
lua_register(_luaContext, "mouseHowMany", apiMouseHowMany);
lua_register(_luaContext, "discGetState", apiDiscGetState);
lua_register(_luaContext, "singeGetPauseFlag", apiSingeGetPauseFlag);
lua_register(_luaContext, "singeSetPauseFlag", apiSingeSetPauseFlag);
lua_register(_luaContext, "singeEnablePauseKey", apiSingeEnablePauseKey);
lua_register(_luaContext, "singeDisablePauseKey", apiSingeDisablePauseKey);
lua_register(_luaContext, "singeQuit", apiSingeQuit);
lua_register(_luaContext, "singeVersion", apiSingeVersion);
lua_register(_luaContext, "singeSetGameName", apiSingeSetGameName);
lua_register(_luaContext, "singeGetScriptPath", apiSingeGetScriptPath);
// Open main video file // Open main video file
doIndexDisplay(-1); doIndexDisplay(-1);
videoSetIndexCallback(doIndexDisplay); videoSetIndexCallback(doIndexDisplay);
@ -2788,6 +2788,18 @@ void singe(SDL_Window *window, SDL_Renderer *renderer) {
} }
} }
// Update video
thisFrame = videoUpdate(_videoHandle, &_videoTexture);
if (_confIsFrameFile) {
frameFileUpdate(_frameFileHandle, &_videoHandle);
}
// Did we get a new video frame?
if ((thisFrame != lastFrame) && (thisFrame >= 0)) {
lastFrame = thisFrame;
frameClock = 0;
_refreshDisplay = true;
}
// Call game code // Call game code
if (SDL_GetTicks() > frameClock) { if (SDL_GetTicks() > frameClock) {
callLua("onOverlayUpdate", ">i", &intReturn); callLua("onOverlayUpdate", ">i", &intReturn);
@ -2797,16 +2809,6 @@ void singe(SDL_Window *window, SDL_Renderer *renderer) {
frameClock = SDL_GetTicks() + 15; // Don't eat all the CPU. frameClock = SDL_GetTicks() + 15; // Don't eat all the CPU.
} }
// Update video
thisFrame = videoUpdate(_videoHandle, &_videoTexture);
if (_confIsFrameFile) {
frameFileUpdate(_frameFileHandle, &_videoHandle);
}
if ((thisFrame != lastFrame) && (thisFrame >= 0)) {
lastFrame = thisFrame;
_refreshDisplay = true;
}
// Update display // Update display
if (_refreshDisplay || _discStopped) { if (_refreshDisplay || _discStopped) {
// Sinden Gun Border // Sinden Gun Border