From deb08476ef58635396d6ed03ee7a14294cdca2a4 Mon Sep 17 00:00:00 2001 From: Caspian Rychlik-Prince Date: Fri, 9 Jul 2004 11:20:14 +0000 Subject: [PATCH] Added experimental sync2() method to Display. We'll see which one works best and remove the worst one. --- src/java/org/lwjgl/opengl/Display.java | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/java/org/lwjgl/opengl/Display.java b/src/java/org/lwjgl/opengl/Display.java index b5873290..a6bbe4b7 100644 --- a/src/java/org/lwjgl/opengl/Display.java +++ b/src/java/org/lwjgl/opengl/Display.java @@ -284,6 +284,28 @@ public final class Display { } timeThen = timeNow; } + + /** + * Alternative sync method which works better on triple-buffered GL displays. + * @param fps The desired frame rate, in frames per second + */ + private static long timeLate; + public static void sync2(int fps) { + long gapTo = Sys.getTimerResolution() / fps + timeThen; + timeNow = Sys.getTime(); + + while (gapTo > timeNow + timeLate) { + Thread.yield(); + timeNow = Sys.getTime(); + } + + if (gapTo < timeNow) + timeLate = timeNow - gapTo; + else + timeLate = 0; + + timeThen = timeNow; + } /** * Initialize and return the current display mode.