aboutsummaryrefslogtreecommitdiff
path: root/engines/prince/prince.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/prince/prince.cpp')
-rw-r--r--engines/prince/prince.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/engines/prince/prince.cpp b/engines/prince/prince.cpp
index 98bf4b7178..5910ca5e35 100644
--- a/engines/prince/prince.cpp
+++ b/engines/prince/prince.cpp
@@ -495,6 +495,8 @@ void PrinceEngine::mainLoop() {
//CursorMan.showMouse(true);
while (!shouldQuit()) {
+ uint32 currentTime = _system->getMillis();
+
Common::Event event;
Common::EventManager *eventMan = _system->getEventManager();
while (eventMan->pollEvent(event)) {
@@ -524,9 +526,13 @@ void PrinceEngine::mainLoop() {
_script->step();
drawScreen();
-
- _system->delayMillis(10);
+ // Calculate the frame delay based off a desired frame time
+ int delay = 1000/15 - int32(_system->getMillis() - currentTime);
+ // Ensure non-negative
+ delay = delay < 0 ? 0 : delay;
+ _system->delayMillis(delay);
+
_cameraX = _newCameraX;
}
}