diff --git a/RabiClone_0.0a.zip b/RabiClone_0.0a.zip index c1a308c..a14d441 100644 Binary files a/RabiClone_0.0a.zip and b/RabiClone_0.0a.zip differ diff --git a/bin/RabiClone.jar b/bin/RabiClone.jar index 6222db0..98877bf 100644 Binary files a/bin/RabiClone.jar and b/bin/RabiClone.jar differ diff --git a/src/sig/RabiClone.java b/src/sig/RabiClone.java index 7f987c9..47175e7 100644 --- a/src/sig/RabiClone.java +++ b/src/sig/RabiClone.java @@ -8,6 +8,8 @@ import net.java.games.input.ControllerEnvironment; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.awt.image.BufferStrategy; +import java.awt.BufferCapabilities; import sig.engine.Panel; import sig.engine.Point; @@ -23,7 +25,7 @@ import sig.engine.PaletteColor; import java.awt.Toolkit; import java.awt.event.KeyEvent; -import java.io.PrintStream; +import java.lang.reflect.Constructor; public class RabiClone { public static final String PROGRAM_NAME = "RabiClone"; @@ -84,7 +86,29 @@ public class RabiClone { (int) ((Toolkit.getDefaultToolkit().getScreenSize().getHeight() - f.getHeight()) / 2)); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); - f.createBufferStrategy(2); + BufferStrategy bf = f.getBufferStrategy(); + if (bf != null) { + BufferCapabilities caps = bf.getCapabilities(); + try { + Class ebcClass = Class.forName( + "sun.java2d.pipe.hw.ExtendedBufferCapabilities"); + Class vstClass = Class.forName( + "sun.java2d.pipe.hw.ExtendedBufferCapabilities$VSyncType"); + + Constructor ebcConstructor = ebcClass.getConstructor( + new Class[] { BufferCapabilities.class, vstClass }); + java.lang.Object vSyncType = vstClass.getField("VSYNC_ON").get(null); + + BufferCapabilities newCaps = (BufferCapabilities)ebcConstructor.newInstance( + new java.lang.Object[] { caps, vSyncType }); + + f.createBufferStrategy(2, newCaps); + } + catch (Throwable t) { + // Ignore + t.printStackTrace(); + } + } OBJ.add(level_renderer = new LevelRenderer(p)); StartGame(); diff --git a/src/sig/engine/Panel.java b/src/sig/engine/Panel.java index 91f8402..d280894 100644 --- a/src/sig/engine/Panel.java +++ b/src/sig/engine/Panel.java @@ -375,6 +375,7 @@ public class Panel extends JPanel implements Runnable,KeyListener { } } while (RabiClone.f.getBufferStrategy().contentsRestored()); RabiClone.f.getBufferStrategy().show(); + Toolkit.getDefaultToolkit().sync(); } while (RabiClone.f.getBufferStrategy().contentsLost()); } updateFPSCounter();