aboutsummaryrefslogtreecommitdiffstats
path: root/src/base
diff options
context:
space:
mode:
authorwhiteshark0 <whiteshark0@b956fd51-792f-4845-bead-9b4dfca2ff2c>2010-02-22 16:22:28 +0000
committerwhiteshark0 <whiteshark0@b956fd51-792f-4845-bead-9b4dfca2ff2c>2010-02-22 16:22:28 +0000
commite90a0510b951c4e08d94d7ca4643eec6add3437c (patch)
treeeebbb1f3155a05d003feb8b54611b89d26b0c8ce /src/base
parentc710a7b0d52b408b865e82eb55480146cbbbaed7 (diff)
downloadusdx-e90a0510b951c4e08d94d7ca4643eec6add3437c.tar.gz
usdx-e90a0510b951c4e08d94d7ca4643eec6add3437c.tar.xz
usdx-e90a0510b951c4e08d94d7ca4643eec6add3437c.zip
some changes to fps limiter,
dependency to old UTime stuff removed git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@2139 b956fd51-792f-4845-bead-9b4dfca2ff2c
Diffstat (limited to 'src/base')
-rw-r--r--src/base/UMain.pas11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/base/UMain.pas b/src/base/UMain.pas
index f05470c1..473a78a9 100644
--- a/src/base/UMain.pas
+++ b/src/base/UMain.pas
@@ -41,6 +41,7 @@ uses
var
Done: boolean;
Restart: boolean;
+ TicksBeforeFrame: Cardinal;
procedure Main;
procedure MainLoop;
@@ -337,6 +338,7 @@ end;
procedure MainLoop;
var
Delay: integer;
+ TicksCurrent: Cardinal;
const
MAX_FPS = 100;
begin
@@ -345,6 +347,8 @@ begin
CountSkipTime(); // JB - for some reason this seems to be needed when we use the SDL Timer functions.
while not Done do
begin
+ TicksBeforeFrame := SDL_GetTicks;
+
// joypad
if (Ini.Joypad = 1) or (Params.Joypad) then
Joy.Update;
@@ -356,10 +360,9 @@ begin
Done := not Display.Draw;
SwapBuffers;
- // delay
- CountMidTime;
-
- Delay := Floor(1000 / MAX_FPS - 1000 * TimeMid);
+ // FPS limiter
+ TicksCurrent := SDL_GetTicks;
+ Delay := 1000 div MAX_FPS - (TicksCurrent - TicksBeforeFrame);
if Delay >= 1 then
SDL_Delay(Delay); // dynamic, maximum is 100 fps