diff --git a/core/src/mindustry/ClientLauncher.java b/core/src/mindustry/ClientLauncher.java index 564edb45fc..3f50c85003 100644 --- a/core/src/mindustry/ClientLauncher.java +++ b/core/src/mindustry/ClientLauncher.java @@ -27,7 +27,7 @@ import static mindustry.Vars.*; public abstract class ClientLauncher extends ApplicationCore implements Platform{ private static final int loadingFPS = 20; - private long lastTime; + private long nextFrame; private long beginTime; private boolean finished = false; private LoadRenderer loader; @@ -199,6 +199,13 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform @Override public void update(){ + int targetfps = Core.settings.getInt("fpscap", 120); + boolean limitFps = targetfps > 0 && targetfps <= 240; + + if(limitFps){ + nextFrame += (1000 * 1000000) / targetfps; + } + if(!finished){ if(loader != null){ loader.draw(); @@ -230,17 +237,13 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform asyncCore.end(); } - int targetfps = Core.settings.getInt("fpscap", 120); - - if(targetfps > 0 && targetfps <= 240){ - long target = (1000 * 1000000) / targetfps; //target in nanos - long elapsed = Time.timeSinceNanos(lastTime); - if(elapsed < target){ - Threads.sleep((target - elapsed) / 1000000, (int)((target - elapsed) % 1000000)); + if(limitFps){ + long current = Time.nanos(); + if(nextFrame > current){ + long toSleep = nextFrame - current; + Threads.sleep(toSleep / 1000000, (int)(toSleep % 1000000)); } } - - lastTime = Time.nanos(); } @Override @@ -251,6 +254,7 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform @Override public void init(){ + nextFrame = Time.nanos(); setup(); } diff --git a/gradle.properties b/gradle.properties index 862d347392..d421ef4261 100644 --- a/gradle.properties +++ b/gradle.properties @@ -25,4 +25,4 @@ org.gradle.caching=true #used for slow jitpack builds; TODO see if this actually works org.gradle.internal.http.socketTimeout=100000 org.gradle.internal.http.connectionTimeout=100000 -archash=a88585a22d +archash=4be3d22cf6