summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjacksonmj <mj-pt@jacksonmj.co.uk>2011-03-29 22:16:54 (GMT)
committer Simon <simon@hardwired.org.uk>2011-04-04 15:10:20 (GMT)
commitd2d3956e72555d07bfaad9315c648f88c300d5b9 (patch)
treeeb1be6933ef866ebb29d9687136249a2a4d27dca /src
parent592b923b6610bf5f90812a8f514abb8ce4f677d1 (diff)
downloadpowder-d2d3956e72555d07bfaad9315c648f88c300d5b9.zip
powder-d2d3956e72555d07bfaad9315c648f88c300d5b9.tar.gz
Improved frame rate limiting
Diffstat (limited to 'src')
-rw-r--r--src/main.c30
1 files changed, 16 insertions, 14 deletions
diff --git a/src/main.c b/src/main.c
index a722c16..68d978b 100644
--- a/src/main.c
+++ b/src/main.c
@@ -2059,7 +2059,8 @@ int main(int argc, char *argv[])
int currentTime = 0;
int FPS = 0;
int pastFPS = 0;
- int past = 0;
+ int elapsedTime = 0;
+ int limitFPS = 60;
void *http_ver_check;
void *http_session_check = NULL;
char *ver_data=NULL, *check_data=NULL, *tmp;
@@ -3659,21 +3660,22 @@ int main(int argc, char *argv[])
drawrect(vid_buf, XRES-19-old_ver_len, YRES-22, old_ver_len+5, 13, 255, 216, 32, 255);
}
- if (hud_enable)
+ FPS++;
+ currentTime = SDL_GetTicks();
+ elapsedTime = currentTime-pastFPS;
+ if (elapsedTime>=1000)
{
- currentTime = SDL_GetTicks();
- if (currentTime-past>=16)
- {
- past = SDL_GetTicks();
- FPS++;
- }
- if (currentTime-pastFPS>=1000)
- {
- FPSB = FPS;
- FPS = 0;
- pastFPS = currentTime;
- }
+ FPSB = FPS;
+ FPS = 0;
+ pastFPS = currentTime;
+ }
+ else if (elapsedTime>20 && FPS*1000/elapsedTime>limitFPS)
+ {
+ SDL_Delay(5);
+ }
+ if (hud_enable)
+ {
#ifdef BETA
sprintf(uitext, "Version %d Beta %d FPS:%d Parts:%d Generation:%d Gravity:%d Air:%d", SAVE_VERSION, MINOR_VERSION, FPSB, NUM_PARTS, GENERATION, gravityMode, airMode);
#else