From: <eli...@us...> - 2006-10-08 09:05:29
|
Revision: 2580 http://svn.sourceforge.net/java-game-lib/?rev=2580&view=rev Author: elias_naur Date: 2006-10-08 02:05:16 -0700 (Sun, 08 Oct 2006) Log Message: ----------- Made Display.getImplementation package private, and made the input.* packages access it through reflection. Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/input/Cursor.java trunk/LWJGL/src/java/org/lwjgl/input/Keyboard.java trunk/LWJGL/src/java/org/lwjgl/input/Mouse.java trunk/LWJGL/src/java/org/lwjgl/opengl/Display.java Modified: trunk/LWJGL/src/java/org/lwjgl/input/Cursor.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/input/Cursor.java 2006-09-28 21:53:18 UTC (rev 2579) +++ trunk/LWJGL/src/java/org/lwjgl/input/Cursor.java 2006-10-08 09:05:16 UTC (rev 2580) @@ -38,7 +38,7 @@ import org.lwjgl.LWJGLException; import org.lwjgl.LWJGLUtil; import org.lwjgl.Sys; -import org.lwjgl.opengl.Display; +import org.lwjgl.opengl.DisplayImplementation; /** * @@ -115,7 +115,7 @@ * @return the maximum size of a native cursor */ public static int getMinCursorSize() { - return Display.getImplementation().getMinCursorSize(); + return Mouse.getImplementation().getMinCursorSize(); } /** @@ -126,7 +126,7 @@ * @return the maximum size of a native cursor */ public static int getMaxCursorSize() { - return Display.getImplementation().getMaxCursorSize(); + return Mouse.getImplementation().getMaxCursorSize(); } /** @@ -138,7 +138,7 @@ * @return A bit mask with native cursor capabilities. */ public static int getCapabilities() { - return Display.getImplementation().getNativeCursorCapabilities(); + return Mouse.getImplementation().getNativeCursorCapabilities(); } /** @@ -164,7 +164,7 @@ // create our cursor elements cursors = new CursorElement[numImages]; for(int i=0; i<numImages; i++) { - Object handle = Display.getImplementation().createCursor(width, height, xHotspot, yHotspot, 1, images_copy, null); + Object handle = Mouse.getImplementation().createCursor(width, height, xHotspot, yHotspot, 1, images_copy, null); long delay = (delays != null) ? delays.get(i) : 0; long timeout = System.currentTimeMillis(); cursors[i] = new CursorElement(handle, delay, timeout); @@ -175,7 +175,7 @@ break; case LWJGLUtil.PLATFORM_LINUX: // create our cursor elements - Object handle = Display.getImplementation().createCursor(width, height, xHotspot, yHotspot, numImages, images_copy, delays); + Object handle = Mouse.getImplementation().createCursor(width, height, xHotspot, yHotspot, numImages, images_copy, delays); CursorElement cursor_element = new CursorElement(handle, -1, -1); cursors = new CursorElement[]{cursor_element}; break; @@ -251,7 +251,7 @@ } } for(int i=0; i<cursors.length; i++) { - Display.getImplementation().destroyCursor(cursors[i].cursorHandle); + Mouse.getImplementation().destroyCursor(cursors[i].cursorHandle); } destroyed = true; } Modified: trunk/LWJGL/src/java/org/lwjgl/input/Keyboard.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/input/Keyboard.java 2006-09-28 21:53:18 UTC (rev 2579) +++ trunk/LWJGL/src/java/org/lwjgl/input/Keyboard.java 2006-10-08 09:05:16 UTC (rev 2580) @@ -42,6 +42,7 @@ import org.lwjgl.LWJGLException; import org.lwjgl.Sys; import org.lwjgl.opengl.Display; +import org.lwjgl.opengl.DisplayImplementation; /** * <br> @@ -263,6 +264,8 @@ /** One time initialization */ private static boolean initialized; + private static DisplayImplementation implementation; + /** * Keyboard cannot be constructed. */ @@ -292,7 +295,8 @@ initialize(); if (created) return; - Display.getImplementation().createKeyboard(); + implementation = Mouse.getImplementation(); + implementation.createKeyboard(); created = true; readBuffer = ByteBuffer.allocate(EVENT_SIZE*BUFFER_SIZE); reset(); @@ -321,7 +325,7 @@ if (!created) return; created = false; - Display.getImplementation().destroyKeyboard(); + implementation.destroyKeyboard(); reset(); } @@ -346,13 +350,13 @@ public static void poll() { if (!created) throw new IllegalStateException("Keyboard must be created before you can poll the device"); - Display.getImplementation().pollKeyboard(keyDownBuffer); + implementation.pollKeyboard(keyDownBuffer); read(); } private static void read() { readBuffer.compact(); - Display.getImplementation().readKeyboard(readBuffer); + implementation.readKeyboard(readBuffer); readBuffer.flip(); } @@ -376,7 +380,7 @@ /* public static int isStateKeySet(int key) { if (!created) throw new IllegalStateException("Keyboard must be created before you can query key state"); - return Display.getImplementation().isStateKeySet(key); + return implementation.isStateKeySet(key); } */ /** Modified: trunk/LWJGL/src/java/org/lwjgl/input/Mouse.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/input/Mouse.java 2006-09-28 21:53:18 UTC (rev 2579) +++ trunk/LWJGL/src/java/org/lwjgl/input/Mouse.java 2006-10-08 09:05:16 UTC (rev 2580) @@ -40,8 +40,15 @@ import org.lwjgl.LWJGLException; import org.lwjgl.LWJGLUtil; import org.lwjgl.Sys; +import org.lwjgl.opengl.DisplayImplementation; import org.lwjgl.opengl.Display; +import java.lang.reflect.Method; +import java.security.AccessController; +import java.security.PrivilegedExceptionAction; +import java.security.PrivilegedActionException; + + /** * <br> * A raw Mouse interface. This can be used to poll the current state of the @@ -126,6 +133,8 @@ private static final int BUFFER_SIZE = 50; private static boolean isGrabbed; + + private static DisplayImplementation implementation; /** Whether we're running windows - which need to manually update cursor animation */ private static final boolean isWindows = LWJGLUtil.getPlatform() == LWJGLUtil.PLATFORM_WINDOWS; @@ -163,10 +172,10 @@ currentCursor = cursor; if (isCreated()) { if (currentCursor != null) { - Display.getImplementation().setNativeCursor(currentCursor.getHandle()); + implementation.setNativeCursor(currentCursor.getHandle()); currentCursor.setTimeout(); } else { - Display.getImplementation().setNativeCursor(null); + implementation.setNativeCursor(null); } } return oldCursor; @@ -187,7 +196,7 @@ x = event_x = new_x; y = event_y = new_y; if (!isGrabbed() && (Cursor.getCapabilities() & Cursor.CURSOR_ONE_BIT_TRANSPARENCY) != 0) - Display.getImplementation().setCursorPosition(x, y); + implementation.setCursorPosition(x, y); } /** @@ -211,6 +220,23 @@ readBuffer.position(readBuffer.limit()); } + static DisplayImplementation getImplementation() { + /* Use reflection since we can't make Display.getImplementation + * public + */ + try { + return (DisplayImplementation)AccessController.doPrivileged(new PrivilegedExceptionAction() { + public Object run() throws Exception{ + Method getImplementation_method = Display.class.getDeclaredMethod("getImplementation", null); + getImplementation_method.setAccessible(true); + return getImplementation_method.invoke(null, null); + } + }); + } catch (PrivilegedActionException e) { + throw new Error(e); + } + } + /** * "Create" the mouse. The display must first have been created. * Initially, the mouse is not grabbed and the delta values are reported @@ -224,12 +250,13 @@ if (!initialized) initialize(); if (created) return; - Display.getImplementation().createMouse(); - hasWheel = Display.getImplementation().hasWheel(); + implementation = getImplementation(); + implementation.createMouse(); + hasWheel = implementation.hasWheel(); created = true; // set mouse buttons - buttonCount = Display.getImplementation().getButtonCount(); + buttonCount = implementation.getButtonCount(); buttons = BufferUtils.createByteBuffer(buttonCount); coord_buffer = BufferUtils.createIntBuffer(3); if (currentCursor != null) @@ -255,7 +282,7 @@ buttons = null; coord_buffer = null; - Display.getImplementation().destroyMouse(); + implementation.destroyMouse(); } /** @@ -281,7 +308,7 @@ */ public static void poll() { if (!created) throw new IllegalStateException("Mouse must be created before you can poll it"); - Display.getImplementation().pollMouse(coord_buffer, buttons); + implementation.pollMouse(coord_buffer, buttons); /* If we're grabbed, poll returns mouse deltas, if not it returns absolute coordinates */ int poll_coord1 = coord_buffer.get(0); @@ -308,7 +335,7 @@ private static void read() { readBuffer.compact(); - Display.getImplementation().readMouse(readBuffer); + implementation.readMouse(readBuffer); readBuffer.flip(); } @@ -527,7 +554,7 @@ public static void setGrabbed(boolean grab) { isGrabbed = grab; if (isCreated()) { - Display.getImplementation().grabMouse(isGrabbed); + implementation.grabMouse(isGrabbed); resetMouse(); } } Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/Display.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/Display.java 2006-09-28 21:53:18 UTC (rev 2579) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/Display.java 2006-10-08 09:05:16 UTC (rev 2580) @@ -718,7 +718,7 @@ GL11.glViewport(0, 0, current_mode.getWidth(), current_mode.getHeight()); } - public static DisplayImplementation getImplementation() { + static DisplayImplementation getImplementation() { return display_impl; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |