From: <eli...@us...> - 2008-04-06 14:39:35
|
Revision: 2968 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=2968&view=rev Author: elias_naur Date: 2008-04-06 07:39:32 -0700 (Sun, 06 Apr 2008) Log Message: ----------- Let otherwise generic AWT utilities classes take a Component instead of the more specific AWTGLCanvas Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/opengl/AWTCanvasImplementation.java trunk/LWJGL/src/java/org/lwjgl/opengl/AWTGLCanvas.java trunk/LWJGL/src/java/org/lwjgl/opengl/AWTSurfaceLock.java trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxAWTGLCanvasPeerInfo.java trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxCanvasImplementation.java trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXAWTGLCanvasPeerInfo.java trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXCanvasImplementation.java trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXCanvasPeerInfo.java trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsAWTGLCanvasPeerInfo.java trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsCanvasImplementation.java Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/AWTCanvasImplementation.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/AWTCanvasImplementation.java 2008-04-01 20:45:24 UTC (rev 2967) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/AWTCanvasImplementation.java 2008-04-06 14:39:32 UTC (rev 2968) @@ -33,6 +33,7 @@ import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; +import java.awt.Component; import org.lwjgl.LWJGLException; @@ -46,7 +47,7 @@ /** * Return an opaque handle to the canvas peer information required to create a context from it. */ - PeerInfo createPeerInfo(AWTGLCanvas canvas, PixelFormat pixel_format) throws LWJGLException; + PeerInfo createPeerInfo(Component component, PixelFormat pixel_format) throws LWJGLException; /** * Find a proper GraphicsConfiguration from the given GraphicsDevice and PixelFormat. Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/AWTGLCanvas.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/AWTGLCanvas.java 2008-04-01 20:45:24 UTC (rev 2967) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/AWTGLCanvas.java 2008-04-06 14:39:32 UTC (rev 2968) @@ -89,7 +89,7 @@ implementation = createImplementation(); } - private static AWTCanvasImplementation createImplementation() { + static AWTCanvasImplementation createImplementation() { switch (LWJGLUtil.getPlatform()) { case LWJGLUtil.PLATFORM_LINUX: return new LinuxCanvasImplementation(); Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/AWTSurfaceLock.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/AWTSurfaceLock.java 2008-04-01 20:45:24 UTC (rev 2967) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/AWTSurfaceLock.java 2008-04-06 14:39:32 UTC (rev 2968) @@ -31,7 +31,7 @@ */ package org.lwjgl.opengl; -import java.awt.Canvas; +import java.awt.Component; import java.nio.ByteBuffer; import java.security.AccessController; import java.security.PrivilegedActionException; @@ -60,8 +60,8 @@ private static native ByteBuffer createHandle(); - public ByteBuffer lockAndGetHandle(Canvas canvas) throws LWJGLException { - while (!privilegedLockAndInitHandle(canvas)) { + public ByteBuffer lockAndGetHandle(Component component) throws LWJGLException { + while (!privilegedLockAndInitHandle(component)) { LWJGLUtil.log("Could not get drawing surface info, retrying..."); try { Thread.sleep(WAIT_DELAY_MILLIS); @@ -73,20 +73,20 @@ return lock_buffer; } - private boolean privilegedLockAndInitHandle(final Canvas canvas) throws LWJGLException { + private boolean privilegedLockAndInitHandle(final Component component) throws LWJGLException { // Workaround for Sun JDK bug 4796548 which still exists in java for OS X // We need to elevate privileges because of an AWT bug. Please see // http://192.18.37.44/forums/index.php?topic=10572 for a discussion. // It is only needed on first call, so we avoid it on all subsequent calls // due to performance. if (firstLockSucceeded) - return lockAndInitHandle(lock_buffer, canvas); + return lockAndInitHandle(lock_buffer, component); else try { final Object result = AccessController.doPrivileged(new PrivilegedExceptionAction() { public Object run() throws LWJGLException { - return Boolean.valueOf(lockAndInitHandle(lock_buffer, canvas)); + return Boolean.valueOf(lockAndInitHandle(lock_buffer, component)); } }); firstLockSucceeded = ((Boolean) result).booleanValue(); @@ -96,7 +96,7 @@ } } - private static native boolean lockAndInitHandle(ByteBuffer lock_buffer, Canvas canvas) throws LWJGLException; + private static native boolean lockAndInitHandle(ByteBuffer lock_buffer, Component component) throws LWJGLException; protected void unlock() throws LWJGLException { nUnlock(lock_buffer); Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxAWTGLCanvasPeerInfo.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxAWTGLCanvasPeerInfo.java 2008-04-01 20:45:24 UTC (rev 2967) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxAWTGLCanvasPeerInfo.java 2008-04-06 14:39:32 UTC (rev 2968) @@ -35,6 +35,7 @@ import org.lwjgl.LWJGLException; import org.lwjgl.LWJGLUtil; +import java.awt.Component; /** * @@ -43,16 +44,16 @@ * $Id$ */ final class LinuxAWTGLCanvasPeerInfo extends LinuxPeerInfo { - private final AWTGLCanvas canvas; + private final Component component; private final AWTSurfaceLock awt_surface = new AWTSurfaceLock(); private int screen = -1; - public LinuxAWTGLCanvasPeerInfo(AWTGLCanvas canvas) { - this.canvas = canvas; + public LinuxAWTGLCanvasPeerInfo(Component component) { + this.component = component; } protected void doLockAndInitHandle() throws LWJGLException { - ByteBuffer surface_handle = awt_surface.lockAndGetHandle(canvas); + ByteBuffer surface_handle = awt_surface.lockAndGetHandle(component); if (screen == -1) { try { screen = getScreenFromSurfaceInfo(surface_handle); Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxCanvasImplementation.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxCanvasImplementation.java 2008-04-01 20:45:24 UTC (rev 2967) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxCanvasImplementation.java 2008-04-06 14:39:32 UTC (rev 2968) @@ -33,6 +33,7 @@ import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; +import java.awt.Component; import java.lang.reflect.Method; import java.security.AccessController; import java.security.PrivilegedExceptionAction; @@ -75,8 +76,8 @@ } } - public PeerInfo createPeerInfo(AWTGLCanvas canvas, PixelFormat pixel_format) throws LWJGLException { - return new LinuxAWTGLCanvasPeerInfo(canvas); + public PeerInfo createPeerInfo(Component component, PixelFormat pixel_format) throws LWJGLException { + return new LinuxAWTGLCanvasPeerInfo(component); } /** Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXAWTGLCanvasPeerInfo.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXAWTGLCanvasPeerInfo.java 2008-04-01 20:45:24 UTC (rev 2967) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXAWTGLCanvasPeerInfo.java 2008-04-06 14:39:32 UTC (rev 2968) @@ -33,6 +33,8 @@ import org.lwjgl.LWJGLException; +import java.awt.Component; + /** * * @author elias_naur <eli...@us...> @@ -40,14 +42,14 @@ * $Id$ */ final class MacOSXAWTGLCanvasPeerInfo extends MacOSXCanvasPeerInfo { - private final AWTGLCanvas canvas; + private final Component component; - public MacOSXAWTGLCanvasPeerInfo(AWTGLCanvas canvas, PixelFormat pixel_format, boolean support_pbuffer) throws LWJGLException { + public MacOSXAWTGLCanvasPeerInfo(Component component, PixelFormat pixel_format, boolean support_pbuffer) throws LWJGLException { super(pixel_format, support_pbuffer); - this.canvas = canvas; + this.component = component; } protected void doLockAndInitHandle() throws LWJGLException { - initHandle(canvas); + initHandle(component); } } Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXCanvasImplementation.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXCanvasImplementation.java 2008-04-01 20:45:24 UTC (rev 2967) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXCanvasImplementation.java 2008-04-06 14:39:32 UTC (rev 2968) @@ -33,6 +33,7 @@ import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; +import java.awt.Component; import org.lwjgl.LWJGLException; @@ -43,11 +44,11 @@ * $Id$ */ final class MacOSXCanvasImplementation implements AWTCanvasImplementation { - public PeerInfo createPeerInfo(AWTGLCanvas canvas, PixelFormat pixel_format) throws LWJGLException { + public PeerInfo createPeerInfo(Component component, PixelFormat pixel_format) throws LWJGLException { try { - return new MacOSXAWTGLCanvasPeerInfo(canvas, pixel_format, true); + return new MacOSXAWTGLCanvasPeerInfo(component, pixel_format, true); } catch (LWJGLException e) { - return new MacOSXAWTGLCanvasPeerInfo(canvas, pixel_format, false); + return new MacOSXAWTGLCanvasPeerInfo(component, pixel_format, false); } } Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXCanvasPeerInfo.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXCanvasPeerInfo.java 2008-04-01 20:45:24 UTC (rev 2967) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXCanvasPeerInfo.java 2008-04-06 14:39:32 UTC (rev 2968) @@ -31,7 +31,7 @@ */ package org.lwjgl.opengl; -import java.awt.Canvas; +import java.awt.Component; import java.nio.ByteBuffer; import org.lwjgl.LWJGLException; @@ -49,8 +49,8 @@ super(pixel_format, true, true, support_pbuffer, true); } - protected void initHandle(Canvas canvas) throws LWJGLException { - nInitHandle(awt_surface.lockAndGetHandle(canvas), getHandle()); + protected void initHandle(Component component) throws LWJGLException { + nInitHandle(awt_surface.lockAndGetHandle(component), getHandle()); } private static native void nInitHandle(ByteBuffer surface_buffer, ByteBuffer peer_info_handle) throws LWJGLException; Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsAWTGLCanvasPeerInfo.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsAWTGLCanvasPeerInfo.java 2008-04-01 20:45:24 UTC (rev 2967) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsAWTGLCanvasPeerInfo.java 2008-04-06 14:39:32 UTC (rev 2968) @@ -35,6 +35,8 @@ import org.lwjgl.LWJGLException; +import java.awt.Component; + /** * * @author elias_naur <eli...@us...> @@ -42,21 +44,21 @@ * $Id$ */ final class WindowsAWTGLCanvasPeerInfo extends WindowsPeerInfo { - private final AWTGLCanvas canvas; + private final Component component; private final AWTSurfaceLock awt_surface = new AWTSurfaceLock(); private final PixelFormat pixel_format; private boolean has_pixel_format= false; - public WindowsAWTGLCanvasPeerInfo(AWTGLCanvas canvas, PixelFormat pixel_format) { - this.canvas = canvas; + public WindowsAWTGLCanvasPeerInfo(Component component, PixelFormat pixel_format) { + this.component = component; this.pixel_format = pixel_format; } protected void doLockAndInitHandle() throws LWJGLException { - nInitHandle(awt_surface.lockAndGetHandle(canvas), getHandle()); - if (!has_pixel_format) { + nInitHandle(awt_surface.lockAndGetHandle(component), getHandle()); + if (!has_pixel_format && pixel_format != null) { // If we haven't applied a pixel format yet, do it now - choosePixelFormat(canvas.getX(), canvas.getY(), pixel_format, null, true, true, false, true); + choosePixelFormat(component.getX(), component.getY(), pixel_format, null, true, true, false, true); has_pixel_format = true; } } Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsCanvasImplementation.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsCanvasImplementation.java 2008-04-01 20:45:24 UTC (rev 2967) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsCanvasImplementation.java 2008-04-06 14:39:32 UTC (rev 2968) @@ -34,6 +34,7 @@ import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; import java.awt.Toolkit; +import java.awt.Component; import java.security.PrivilegedAction; import java.security.AccessController; @@ -69,8 +70,8 @@ return new WindowsAWTInput(canvas); } - public PeerInfo createPeerInfo(AWTGLCanvas canvas, PixelFormat pixel_format) throws LWJGLException { - return new WindowsAWTGLCanvasPeerInfo(canvas, pixel_format); + public PeerInfo createPeerInfo(Component component, PixelFormat pixel_format) throws LWJGLException { + return new WindowsAWTGLCanvasPeerInfo(component, pixel_format); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |