From 4065355f84658220193bff3e65dcb6af4a0cd748 Mon Sep 17 00:00:00 2001 From: pacien Date: Sun, 4 Feb 2018 13:46:08 +0100 Subject: Fix execution timer Signed-off-by: pacien --- src/main/java/fr/umlv/java/wallj/viewer/Viewer.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/fr/umlv/java/wallj/viewer/Viewer.java b/src/main/java/fr/umlv/java/wallj/viewer/Viewer.java index e65389e..6b4f5c4 100644 --- a/src/main/java/fr/umlv/java/wallj/viewer/Viewer.java +++ b/src/main/java/fr/umlv/java/wallj/viewer/Viewer.java @@ -37,7 +37,7 @@ public final class Viewer { Duration lastExecDuration = Duration.ZERO; while (!currentGame.isOver()) { Duration last = lastExecDuration; - long timeBeforeExec = System.currentTimeMillis(); + StopWatch stopWatch = new StopWatch(); applicationContext.renderFrame(graphics2D -> { InputHandler inputHandler = new InputHandler(applicationContext); ScreenManager screenManager = new ScreenManager(applicationContext, graphics2D); @@ -47,11 +47,9 @@ public final class Viewer { events.clear(); events.addAll(newEvents); //add the new events returned by updates }); - long timeAfterExec = System.currentTimeMillis(); - lastExecDuration = Duration.ofMillis(timeAfterExec - timeBeforeExec); + lastExecDuration = FRAME_DURATION.minus(stopWatch.peek()); try { - Duration sleepDuration = FRAME_DURATION.minus(lastExecDuration); - if (!sleepDuration.isNegative()) Thread.sleep(sleepDuration.toMillis()); + if (!lastExecDuration.isNegative()) Thread.sleep(lastExecDuration.toMillis()); } catch (Exception e) { applicationContext.exit(-1); } -- cgit v1.2.3