// Ignore
}
public void canvasSetRenderingMode() {
if (Monitor.MULTI_BUFFERING <= 0) return;
BufferCapabilities desiredCaps = new BufferCapabilities(
new ImageCapabilities(true), new ImageCapabilities(true),
Monitor.PAGE_FLIPPING ? FlipContents.BACKGROUND : null
);
Class<?> extBufCapClass = null;
try {
// Creates ExtendedBufferCapabilities via reflection to avoid problems with AccessControl
extBufCapClass = Class.forName("sun.java2d.pipe.hw.ExtendedBufferCapabilities");
} catch (Exception ex) {}
// First try with vSync option
if (extBufCapClass != null && Monitor.BUFFER_VSYNC != -1)
try {
// Creates ExtendedBufferCapabilities via reflection to avoid problems with AccessControl
Class<?> vSyncTypeClass = Class.forName("sun.java2d.pipe.hw.ExtendedBufferCapabilities$VSyncType");
Constructor<?> extBufCapConstructor = extBufCapClass.getConstructor(
new Class[] { BufferCapabilities.class, vSyncTypeClass }
);
Object vSyncType = vSyncTypeClass.getField(Monitor.BUFFER_VSYNC == 1 ? "VSYNC_ON" : "VSYNC_OFF").get(null);
BufferCapabilities extBuffCaps = (BufferCapabilities)extBufCapConstructor.newInstance(
new Object[] { desiredCaps, vSyncType }
);
// Try creating the BufferStrategy
canvas.createBufferStrategy(Monitor.MULTI_BUFFERING, extBuffCaps);
} catch (Exception ex) {}
// Then try with remaining options (Flipping, etc)
if (canvas.getBufferStrategy() == null)
try {
canvas.createBufferStrategy(Monitor.MULTI_BUFFERING, desiredCaps);
} catch (Exception ex) {}
// Last, use the default
if (canvas.getBufferStrategy() == null) {
System.out.println("Could not create desired BufferStrategy. Switching to default...");
canvas.createBufferStrategy(Monitor.MULTI_BUFFERING);
}
bufferStrategy = canvas.getBufferStrategy();
// Show info about the granted BufferStrategy
if (bufferStrategy != null) System.out.println("Buffer Strategy: " + bufferStrategy.getClass().getSimpleName());
BufferCapabilities grantedCaps = bufferStrategy.getCapabilities();
System.out.println("Backbuffer Accelerated: " + grantedCaps.getBackBufferCapabilities().isAccelerated());
System.out.println("PageFlipping Active: " + grantedCaps.isPageFlipping() + ", " + grantedCaps.getFlipContents());
if (extBufCapClass != null && grantedCaps.getClass().equals(extBufCapClass))
try {
System.out.println("VSynch active: " + extBufCapClass.getMethod("getVSync",(Class<?>[])null).invoke(grantedCaps));
} catch (Exception ex) {}
}