/** * Destroys the buffers created through this object */ protected void destroyBuffers() { VSyncedBSManager.releaseVsync(this); if (peer != null) { peer.destroyBuffers(); } else { throw new IllegalStateException( "Component must have a valid peer"); } }
/** * Creates one or more complex, flipping buffers with the given * capabilities. * @param numBuffers number of buffers to create; must be greater than * one * @param caps the capabilities of the buffers. * <code>BufferCapabilities.isPageFlipping</code> must be * <code>true</code>. * @exception AWTException if the capabilities supplied could not be * supported or met * @exception IllegalStateException if the component has no peer * @exception IllegalArgumentException if numBuffers is less than two, * or if <code>BufferCapabilities.isPageFlipping</code> is not * <code>true</code>. * @see java.awt.BufferCapabilities#isPageFlipping() */ protected void createBuffers(int numBuffers, BufferCapabilities caps) throws AWTException { if (numBuffers < 2) { throw new IllegalArgumentException( "Number of buffers cannot be less than two"); } else if (peer == null) { throw new IllegalStateException( "Component must have a valid peer"); } else if (caps == null || !caps.isPageFlipping()) { throw new IllegalArgumentException( "Page flipping capabilities must be specified"); } // save the current bounds width = getWidth(); height = getHeight(); if (drawBuffer != null) { // dispose the existing backbuffers drawBuffer = null; drawVBuffer = null; destroyBuffers(); // ... then recreate the backbuffers } if (caps instanceof ExtendedBufferCapabilities) { ExtendedBufferCapabilities ebc = (ExtendedBufferCapabilities)caps; if (ebc.getVSync() == VSYNC_ON) { // if this buffer strategy is not allowed to be v-synced, // change the caps that we pass to the peer but keep on // trying to create v-synced buffers; // do not throw IAE here in case it is disallowed, see // ExtendedBufferCapabilities for more info if (!VSyncedBSManager.vsyncAllowed(this)) { caps = ebc.derive(VSYNC_DEFAULT); } } } peer.createBuffers(numBuffers, caps); updateInternalBuffers(); }
/** * Creates one or more complex, flipping buffers with the given * capabilities. * @param numBuffers number of buffers to create; must be greater than * one * @param caps the capabilities of the buffers. * {@code BufferCapabilities.isPageFlipping} must be * {@code true}. * @exception AWTException if the capabilities supplied could not be * supported or met * @exception IllegalStateException if the component has no peer * @exception IllegalArgumentException if numBuffers is less than two, * or if {@code BufferCapabilities.isPageFlipping} is not * {@code true}. * @see java.awt.BufferCapabilities#isPageFlipping() */ protected void createBuffers(int numBuffers, BufferCapabilities caps) throws AWTException { if (numBuffers < 2) { throw new IllegalArgumentException( "Number of buffers cannot be less than two"); } else if (peer == null) { throw new IllegalStateException( "Component must have a valid peer"); } else if (caps == null || !caps.isPageFlipping()) { throw new IllegalArgumentException( "Page flipping capabilities must be specified"); } // save the current bounds width = getWidth(); height = getHeight(); if (drawBuffer != null) { // dispose the existing backbuffers drawBuffer = null; drawVBuffer = null; destroyBuffers(); // ... then recreate the backbuffers } if (caps instanceof ExtendedBufferCapabilities) { ExtendedBufferCapabilities ebc = (ExtendedBufferCapabilities)caps; if (ebc.getVSync() == VSYNC_ON) { // if this buffer strategy is not allowed to be v-synced, // change the caps that we pass to the peer but keep on // trying to create v-synced buffers; // do not throw IAE here in case it is disallowed, see // ExtendedBufferCapabilities for more info if (!VSyncedBSManager.vsyncAllowed(this)) { caps = ebc.derive(VSYNC_DEFAULT); } } } peer.createBuffers(numBuffers, caps); updateInternalBuffers(); }