only wait for vsync if under frame budget

This commit is contained in:
Shaun Inman 2023-01-13 20:12:47 -05:00
parent 1143e46d20
commit d8c96b82fa
4 changed files with 20 additions and 11 deletions

View file

@ -1262,6 +1262,7 @@ int main (int argc, char *argv[]) {
unsigned long cancel_start = SDL_GetTicks();
unsigned long power_start = 0;
while (!quit) {
GFX_startFrame();
unsigned long frame_start = SDL_GetTicks();
PAD_poll();
@ -1556,10 +1557,12 @@ int main (int argc, char *argv[]) {
GFX_flip(screen);
dirty = 0;
}
// // slow down to 60fps
// unsigned long frame_duration = SDL_GetTicks() - frame_start;
// #define TARGET_FRAME_DURATION 17
// if (frame_duration<TARGET_FRAME_DURATION) SDL_Delay(TARGET_FRAME_DURATION-frame_duration);
else {
// slow down to 60fps
unsigned long frame_duration = SDL_GetTicks() - frame_start;
#define TARGET_FRAME_DURATION 17
if (frame_duration<TARGET_FRAME_DURATION) SDL_Delay(TARGET_FRAME_DURATION-frame_duration);
}
}
if (version) SDL_FreeSurface(version);