Added LWJGLErrorException to replace the too general Exception

This commit is contained in:
Elias Naur 2004-03-27 14:42:47 +00:00
parent 021e03eea5
commit 63b33930b1
14 changed files with 197 additions and 181 deletions

View File

@ -131,9 +131,9 @@ public final class Display {
* still need to query the display's characteristics using getDisplayMode(). * still need to query the display's characteristics using getDisplayMode().
* *
* @param mode The new display mode to set * @param mode The new display mode to set
* @throws Exception if the display mode could not be set * @throws LWJGLErrorException if the display mode could not be set
*/ */
public static native void setDisplayMode(DisplayMode mode) throws Exception; public static native void setDisplayMode(DisplayMode mode) throws LWJGLErrorException;
/** /**
* Reset the display mode to whatever it was when LWJGL was initialized. * Reset the display mode to whatever it was when LWJGL was initialized.
@ -195,14 +195,14 @@ public final class Display {
* @param brightness The brightness value between -1.0 and 1.0, inclusive * @param brightness The brightness value between -1.0 and 1.0, inclusive
* @param contrast The contrast, larger than 0.0. * @param contrast The contrast, larger than 0.0.
*/ */
public static void setDisplayConfiguration(float gamma, float brightness, float contrast) throws Exception { public static void setDisplayConfiguration(float gamma, float brightness, float contrast) throws LWJGLErrorException {
if (brightness < -1.0f || brightness > 1.0f) if (brightness < -1.0f || brightness > 1.0f)
throw new IllegalArgumentException("Invalid brightness value"); throw new IllegalArgumentException("Invalid brightness value");
if (contrast < 0.0f) if (contrast < 0.0f)
throw new IllegalArgumentException("Invalid contrast value"); throw new IllegalArgumentException("Invalid contrast value");
int rampSize = getGammaRampLength(); int rampSize = getGammaRampLength();
if (rampSize == 0) { if (rampSize == 0) {
throw new Exception("Display configuration not supported"); throw new LWJGLErrorException("Display configuration not supported");
} }
FloatBuffer gammaRamp = ByteBuffer.allocateDirect(rampSize*4).order(ByteOrder.nativeOrder()).asFloatBuffer(); FloatBuffer gammaRamp = ByteBuffer.allocateDirect(rampSize*4).order(ByteOrder.nativeOrder()).asFloatBuffer();
for (int i = 0; i < rampSize; i++) { for (int i = 0; i < rampSize; i++) {
@ -235,7 +235,7 @@ public final class Display {
/** /**
* Native method to set the gamma ramp. * Native method to set the gamma ramp.
*/ */
private static native void setGammaRamp(FloatBuffer gammaRamp) throws Exception ; private static native void setGammaRamp(FloatBuffer gammaRamp) throws LWJGLErrorException;
/** /**
* Get the driver adapter string. This is a unique string describing the actual card's hardware, eg. "Geforce2", "PS2", * Get the driver adapter string. This is a unique string describing the actual card's hardware, eg. "Geforce2", "PS2",

View File

@ -0,0 +1,7 @@
package org.lwjgl;
public class LWJGLErrorException extends Exception {
public LWJGLErrorException(String msg) {
super(msg);
}
}

View File

@ -52,7 +52,7 @@ final class SwingAdapter implements PlatformAdapter {
*/ */
SwingAdapter() { SwingAdapter() {
} }
/** /**
* Spawn a "modal" dialog in the centre of the screen with a message in it * Spawn a "modal" dialog in the centre of the screen with a message in it
* and an OK button. This method blocks until the dialog is dismissed. * and an OK button. This method blocks until the dialog is dismissed.
@ -60,10 +60,10 @@ final class SwingAdapter implements PlatformAdapter {
* @param message Message to show in alert * @param message Message to show in alert
*/ */
public void alert(String title, String message) { public void alert(String title, String message) {
try { try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch(Exception e) { } catch(Exception e) {
} }
JOptionPane.showMessageDialog(null, message, title, JOptionPane.WARNING_MESSAGE); JOptionPane.showMessageDialog(null, message, title, JOptionPane.WARNING_MESSAGE);
} }
} }

View File

@ -37,6 +37,7 @@ import java.util.Map;
import org.lwjgl.Sys; import org.lwjgl.Sys;
import org.lwjgl.opengl.Window; import org.lwjgl.opengl.Window;
import org.lwjgl.LWJGLErrorException;
/** /**
* $Id$ * $Id$
@ -163,9 +164,9 @@ public class Controller {
/** /**
* "Create" the controller. The display must first have been created. * "Create" the controller. The display must first have been created.
* @throws Exception if the controller could not be created for any reason * @throws LWJGLErrorException if the controller could not be created for any reason
*/ */
public static void create() throws Exception { public static void create() throws LWJGLErrorException {
if (!Window.isCreated()) if (!Window.isCreated())
throw new IllegalStateException("Window must be created before you can create Controller"); throw new IllegalStateException("Window must be created before you can create Controller");
initialize(); initialize();
@ -267,7 +268,7 @@ public class Controller {
/** /**
* Native method to create the controller * Native method to create the controller
*/ */
private static native void nCreate() throws Exception; private static native void nCreate() throws LWJGLErrorException;
/** /**
* Native method the destroy the controller * Native method the destroy the controller
@ -278,122 +279,122 @@ public class Controller {
* Register fields with the native library * Register fields with the native library
*/ */
private static native void initIDs(); private static native void initIDs();
/** /**
* @return Returns the buttonCount. * @return Returns the buttonCount.
*/ */
public static int getButtonCount() { public static int getButtonCount() {
return buttonCount; return buttonCount;
} }
/** /**
* @return Returns whether POV is supported * @return Returns whether POV is supported
*/ */
public static boolean hasPOV() { public static boolean hasPOV() {
return hasPOV; return hasPOV;
} }
/** /**
* @return Returns whether a rotational x axis is supported * @return Returns whether a rotational x axis is supported
*/ */
public static boolean hasRXAxis() { public static boolean hasRXAxis() {
return hasRXAxis; return hasRXAxis;
} }
/** /**
* @return Returns whether a rotational y axis is supported * @return Returns whether a rotational y axis is supported
*/ */
public static boolean hasRYAxis() { public static boolean hasRYAxis() {
return hasRYAxis; return hasRYAxis;
} }
/** /**
* @return Returns whether a rotational z axis is supported * @return Returns whether a rotational z axis is supported
*/ */
public static boolean hasRZAxis() { public static boolean hasRZAxis() {
return hasRZAxis; return hasRZAxis;
} }
/** /**
* @return Returns whether a slider is supported * @return Returns whether a slider is supported
*/ */
public static boolean hasSlider() { public static boolean hasSlider() {
return hasSlider; return hasSlider;
} }
/** /**
* @return Returns whether a x axis is supported * @return Returns whether a x axis is supported
*/ */
public static boolean hasXAxis() { public static boolean hasXAxis() {
return hasXAxis; return hasXAxis;
} }
/** /**
* @return Returns whether a y axis is supported * @return Returns whether a y axis is supported
*/ */
public static boolean hasYAxis() { public static boolean hasYAxis() {
return hasYAxis; return hasYAxis;
} }
/** /**
* @return Returns whether a z axis is supported * @return Returns whether a z axis is supported
*/ */
public static boolean hasZAxis() { public static boolean hasZAxis() {
return hasZAxis; return hasZAxis;
} }
/** /**
* @return Returns the POV value * @return Returns the POV value
*/ */
public static int getPov() { public static int getPov() {
return pov; return pov;
} }
/** /**
* @return Returns the rotational value of the x axis * @return Returns the rotational value of the x axis
*/ */
public static int getRx() { public static int getRx() {
return rx; return rx;
} }
/** /**
* @return Returns the rotational value of the y axis * @return Returns the rotational value of the y axis
*/ */
public static int getRy() { public static int getRy() {
return ry; return ry;
} }
/** /**
* @return Returns the rotational value of the z axis * @return Returns the rotational value of the z axis
*/ */
public static int getRz() { public static int getRz() {
return rz; return rz;
} }
/** /**
* @return Returns the slider value * @return Returns the slider value
*/ */
public static int getSlider() { public static int getSlider() {
return slider; return slider;
} }
/** /**
* @return Returns the x axis value * @return Returns the x axis value
*/ */
public static int getX() { public static int getX() {
return x; return x;
} }
/** /**
* @return Returns the y axis value * @return Returns the y axis value
*/ */
public static int getY() { public static int getY() {
return y; return y;
} }
/** /**
* @return Returns the z axis value * @return Returns the z axis value
*/ */
public static int getZ() { public static int getZ() {
return z; return z;
} }
} }

View File

@ -37,6 +37,7 @@ import java.nio.ByteOrder;
import java.nio.IntBuffer; import java.nio.IntBuffer;
import org.lwjgl.Sys; import org.lwjgl.Sys;
import org.lwjgl.LWJGLErrorException;
/** /**
* $Id$ * $Id$
@ -68,9 +69,9 @@ public class Cursor {
* @param numImages number of cursor images specified. Must be 1 if animations are not supported. * @param numImages number of cursor images specified. Must be 1 if animations are not supported.
* @param images A buffer containing the images. The origin is at the lower left corner, like OpenGL. * @param images A buffer containing the images. The origin is at the lower left corner, like OpenGL.
* @param delays An int buffer of animation frame delays, if numImages is greater than 1, else null * @param delays An int buffer of animation frame delays, if numImages is greater than 1, else null
* @throws Exception if the cursor could not be created for any reason * @throws LWJGLErrorException if the cursor could not be created for any reason
*/ */
public Cursor(int width, int height, int xHotspot, int yHotspot, int numImages, IntBuffer images, IntBuffer delays) throws Exception { public Cursor(int width, int height, int xHotspot, int yHotspot, int numImages, IntBuffer images, IntBuffer delays) throws LWJGLErrorException {
if (!Mouse.isCreated()) if (!Mouse.isCreated())
throw new IllegalStateException("Mouse must be created before creating cursor objects"); throw new IllegalStateException("Mouse must be created before creating cursor objects");
if (width*height*numImages > images.remaining()) if (width*height*numImages > images.remaining())
@ -94,7 +95,7 @@ public class Cursor {
/** /**
* Creates the actual cursor, using a platform specific class * Creates the actual cursor, using a platform specific class
*/ */
private void createCursors(int width, int height, int xHotspot, int yHotspot, int numImages, IntBuffer images, IntBuffer delays) throws Exception { private void createCursors(int width, int height, int xHotspot, int yHotspot, int numImages, IntBuffer images, IntBuffer delays) throws LWJGLErrorException {
// create copy and flip images to match ogl // create copy and flip images to match ogl
IntBuffer images_copy = ByteBuffer.allocateDirect(images.remaining()*4).order(ByteOrder.nativeOrder()).asIntBuffer(); IntBuffer images_copy = ByteBuffer.allocateDirect(images.remaining()*4).order(ByteOrder.nativeOrder()).asIntBuffer();
flipImages(width, height, numImages, images, images_copy); flipImages(width, height, numImages, images, images_copy);

View File

@ -41,6 +41,7 @@ import java.util.Map;
import org.lwjgl.BufferUtils; import org.lwjgl.BufferUtils;
import org.lwjgl.Sys; import org.lwjgl.Sys;
import org.lwjgl.opengl.Window; import org.lwjgl.opengl.Window;
import org.lwjgl.LWJGLErrorException;
/** /**
* $Id$ * $Id$
@ -284,9 +285,9 @@ public class Keyboard {
* "Create" the keyboard. The display must first have been created. The * "Create" the keyboard. The display must first have been created. The
* reason for this is so the keyboard has a window to "focus" in. * reason for this is so the keyboard has a window to "focus" in.
* *
* @throws Exception if the keyboard could not be created for any reason * @throws LWJGLErrorException if the keyboard could not be created for any reason
*/ */
public static void create() throws Exception { public static void create() throws LWJGLErrorException {
if (!Window.isCreated()) if (!Window.isCreated())
throw new IllegalStateException("Window must be created before you can create Keyboard"); throw new IllegalStateException("Window must be created before you can create Keyboard");
if (!initialized) if (!initialized)
@ -300,7 +301,7 @@ public class Keyboard {
/** /**
* Native method to create the keyboard * Native method to create the keyboard
*/ */
private static native void nCreate() throws Exception; private static native void nCreate() throws LWJGLErrorException;
/** /**
* @return true if the keyboard has been created * @return true if the keyboard has been created
@ -388,7 +389,7 @@ public class Keyboard {
* Enable keyboard translation. Must be called after the keyboard is created, * Enable keyboard translation. Must be called after the keyboard is created,
* and keyboard buffering must be enabled. * and keyboard buffering must be enabled.
*/ */
public static void enableTranslation() throws Exception { public static void enableTranslation() throws LWJGLErrorException {
if (!created) if (!created)
throw new IllegalStateException("Keyboard must be created before you can read events"); throw new IllegalStateException("Keyboard must be created before you can read events");
if (readBuffer == null) if (readBuffer == null)
@ -400,12 +401,12 @@ public class Keyboard {
/** /**
* Native method to enable the translation buffer * Native method to enable the translation buffer
*/ */
private static native void nEnableTranslation() throws Exception; private static native void nEnableTranslation() throws LWJGLErrorException;
/** /**
* Enable keyboard buffering. Must be called after the keyboard is created. * Enable keyboard buffering. Must be called after the keyboard is created.
*/ */
public static void enableBuffer() throws Exception { public static void enableBuffer() throws LWJGLErrorException {
if (!created) if (!created)
throw new IllegalStateException("Keyboard must be created before you can enable buffering"); throw new IllegalStateException("Keyboard must be created before you can enable buffering");
readBuffer = BufferUtils.createByteBuffer(4*BUFFER_SIZE); readBuffer = BufferUtils.createByteBuffer(4*BUFFER_SIZE);
@ -418,7 +419,7 @@ public class Keyboard {
* @return the event buffer, * @return the event buffer,
* or null if no buffer can be allocated * or null if no buffer can be allocated
*/ */
private static native void nEnableBuffer() throws Exception; private static native void nEnableBuffer() throws LWJGLErrorException;
/** /**
* Checks to see if a key is down. * Checks to see if a key is down.

View File

@ -39,6 +39,7 @@ import java.util.Map;
import org.lwjgl.BufferUtils; import org.lwjgl.BufferUtils;
import org.lwjgl.Sys; import org.lwjgl.Sys;
import org.lwjgl.opengl.Window; import org.lwjgl.opengl.Window;
import org.lwjgl.LWJGLErrorException;
/** /**
* $Id$ * $Id$
@ -164,9 +165,9 @@ public class Mouse {
* *
* @param cursor the native cursor object to bind. May be null. * @param cursor the native cursor object to bind. May be null.
* @return The previous Cursor object set, or null. * @return The previous Cursor object set, or null.
* @throws Exception if the cursor could not be set for any reason * @throws LWJGLErrorException if the cursor could not be set for any reason
*/ */
public static Cursor setNativeCursor(Cursor cursor) throws Exception { public static Cursor setNativeCursor(Cursor cursor) throws LWJGLErrorException {
if (!created) if (!created)
throw new IllegalStateException("Create the Mouse before setting the native cursor"); throw new IllegalStateException("Create the Mouse before setting the native cursor");
if ((getNativeCursorCaps() & CURSOR_ONE_BIT_TRANSPARENCY) == 0) if ((getNativeCursorCaps() & CURSOR_ONE_BIT_TRANSPARENCY) == 0)
@ -183,7 +184,7 @@ public class Mouse {
} }
/** Native method to set the native cursor */ /** Native method to set the native cursor */
private static native void nSetNativeCursor(long handle) throws Exception; private static native void nSetNativeCursor(long handle) throws LWJGLErrorException;
/** /**
* Gets the minimum size of a native cursor. Can only be called if * Gets the minimum size of a native cursor. Can only be called if
@ -238,9 +239,9 @@ public class Mouse {
/** /**
* "Create" the mouse. The display must first have been created. * "Create" the mouse. The display must first have been created.
* *
* @throws Exception if the mouse could not be created for any reason * @throws LWJGLErrorException if the mouse could not be created for any reason
*/ */
public static void create() throws Exception { public static void create() throws LWJGLErrorException {
if (!Window.isCreated()) if (!Window.isCreated())
throw new IllegalStateException("Window must be created prior to creating mouse"); throw new IllegalStateException("Window must be created prior to creating mouse");
@ -293,7 +294,7 @@ public class Mouse {
if (currentCursor != null) { if (currentCursor != null) {
try { try {
setNativeCursor(null); setNativeCursor(null);
} catch (Exception e) { } catch (LWJGLErrorException e) {
if (Sys.DEBUG) if (Sys.DEBUG)
e.printStackTrace(); e.printStackTrace();
} }
@ -401,7 +402,7 @@ public class Mouse {
/** /**
* Enable mouse button buffering. Must be called after the mouse is created. * Enable mouse button buffering. Must be called after the mouse is created.
*/ */
public static void enableBuffer() throws Exception { public static void enableBuffer() throws LWJGLErrorException {
if (!created) if (!created)
throw new IllegalStateException("Mouse must be created before you can enable buffering"); throw new IllegalStateException("Mouse must be created before you can enable buffering");
readBuffer = BufferUtils.createByteBuffer(2*BUFFER_SIZE); readBuffer = BufferUtils.createByteBuffer(2*BUFFER_SIZE);
@ -414,7 +415,7 @@ public class Mouse {
* @return the event buffer, * @return the event buffer,
* or null if no buffer can be allocated * or null if no buffer can be allocated
*/ */
private static native void nEnableBuffer() throws Exception; private static native void nEnableBuffer() throws LWJGLErrorException;
/** /**
* Reads all button events since last read. * Reads all button events since last read.
@ -545,7 +546,7 @@ public class Mouse {
currentCursor.nextCursor(); currentCursor.nextCursor();
try { try {
setNativeCursor(currentCursor); setNativeCursor(currentCursor);
} catch (Exception e) { } catch (LWJGLErrorException e) {
if (Sys.DEBUG) if (Sys.DEBUG)
e.printStackTrace(); e.printStackTrace();
} }

View File

@ -37,6 +37,7 @@ import java.util.StringTokenizer;
import org.lwjgl.Display; import org.lwjgl.Display;
import org.lwjgl.Sys; import org.lwjgl.Sys;
import org.lwjgl.LWJGLErrorException;
/** /**
* $Id$ * $Id$
@ -86,7 +87,7 @@ public abstract class AL {
* @param oalPaths Array of strings containing paths to search for OpenAL library * @param oalPaths Array of strings containing paths to search for OpenAL library
* @return true if the AL creation process succeeded * @return true if the AL creation process succeeded
*/ */
protected static native void nCreate(String[] oalPaths) throws OpenALException; protected static native void nCreate(String[] oalPaths) throws LWJGLErrorException;
/** /**
* Native method the destroy the AL * Native method the destroy the AL
@ -101,17 +102,17 @@ public abstract class AL {
} }
/** /**
* Creates an OpenAL instance. Using this constructor will cause OpenAL to * Creates an OpenAL instance. Using this constructor will cause OpenAL to
* open the device using supplied device argument, and create a context using the context values * open the device using supplied device argument, and create a context using the context values
* supplied. * supplied.
* *
* @param deviceArguments Arguments supplied to native device * @param deviceArguments Arguments supplied to native device
* @param contextFrequency Frequency for mixing output buffer, in units of Hz (Common values include 11025, 22050, and 44100). * @param contextFrequency Frequency for mixing output buffer, in units of Hz (Common values include 11025, 22050, and 44100).
* @param contextRefresh Refresh intervalls, in units of Hz. * @param contextRefresh Refresh intervalls, in units of Hz.
* @param contextSynchronized Flag, indicating a synchronous context.* * @param contextSynchronized Flag, indicating a synchronous context.*
*/ */
public static void create(String deviceArguments, int contextFrequency, int contextRefresh, boolean contextSynchronized) public static void create(String deviceArguments, int contextFrequency, int contextRefresh, boolean contextSynchronized)
throws OpenALException { throws LWJGLErrorException {
if (created) { if (created) {
return; return;
@ -130,7 +131,7 @@ public abstract class AL {
* Creates an OpenAL instance. The empty create will cause OpenAL to * Creates an OpenAL instance. The empty create will cause OpenAL to
* open the default device, and create a context using default values. * open the default device, and create a context using default values.
*/ */
public static void create() throws OpenALException { public static void create() throws LWJGLErrorException {
if(created) { if(created) {
return; return;
} }
@ -151,7 +152,7 @@ public abstract class AL {
jwsLibname = "openal"; jwsLibname = "openal";
break; break;
default: default:
throw new OpenALException("Unknown platform"); throw new LWJGLErrorException("Unknown platform");
} }
String jwsPath = getPathFromJWS(jwsLibname); String jwsPath = getPathFromJWS(jwsLibname);

View File

@ -35,6 +35,7 @@ import java.nio.Buffer;
import java.nio.IntBuffer; import java.nio.IntBuffer;
import org.lwjgl.Sys; import org.lwjgl.Sys;
import org.lwjgl.LWJGLErrorException;
/** /**
* $Id$ * $Id$
@ -158,9 +159,9 @@ public class ALC {
/** /**
* Creates the ALC instance * Creates the ALC instance
* *
* @throws Exception if a failiure occured in the ALC creation process * @throws LWJGLErrorException if a failiure occured in the ALC creation process
*/ */
protected static void create() throws OpenALException { protected static void create() throws LWJGLErrorException {
if (created) { if (created) {
return; return;
} }

View File

@ -33,6 +33,7 @@
package org.lwjgl.openal.eax; package org.lwjgl.openal.eax;
import org.lwjgl.Sys; import org.lwjgl.Sys;
import org.lwjgl.LWJGLErrorException;
/** /**
* $Id$ * $Id$
@ -53,15 +54,15 @@ public class EAX {
/** /**
* Loads the EAX functions * Loads the EAX functions
* *
* @throws Exception if the EAX extensions couldn't be loaded * @throws LWJGLErrorException if the EAX extensions couldn't be loaded
*/ */
public static void create() throws Exception { public static void create() throws LWJGLErrorException {
if (created) { if (created) {
return; return;
} }
if (!nCreate()) { if (!nCreate()) {
throw new Exception("EAX instance could not be created."); throw new LWJGLErrorException("EAX instance could not be created.");
} }
EAX20.init(); EAX20.init();
created = true; created = true;

View File

@ -33,6 +33,7 @@
package org.lwjgl.opengl; package org.lwjgl.opengl;
import org.lwjgl.Sys; import org.lwjgl.Sys;
import org.lwjgl.LWJGLErrorException;
import java.nio.IntBuffer; import java.nio.IntBuffer;
@ -159,7 +160,7 @@ public final class Pbuffer {
} }
/** /**
* Construct an instance of a Pbuffer. If this fails then an Exception will be thrown. The buffer is single-buffered. * Construct an instance of a Pbuffer. If this fails then an LWJGLErrorException will be thrown. The buffer is single-buffered.
* <p/> * <p/>
* NOTE: An OpenGL window must be created before a Pbuffer can be created. The Pbuffer will have its own context that shares * NOTE: An OpenGL window must be created before a Pbuffer can be created. The Pbuffer will have its own context that shares
* display lists and textures with the OpenGL window context, but it will have its own OpenGL state. Therefore, state changes * display lists and textures with the OpenGL window context, but it will have its own OpenGL state. Therefore, state changes
@ -182,7 +183,7 @@ public final class Pbuffer {
* 0 to disable multisampling. This parameter is ignored if GL_ARB_multisample is not supported. * 0 to disable multisampling. This parameter is ignored if GL_ARB_multisample is not supported.
* @param renderTexture * @param renderTexture
*/ */
public Pbuffer(int width, int height, int bpp, int alpha, int depth, int stencil, int samples, RenderTexture renderTexture) throws Exception { public Pbuffer(int width, int height, int bpp, int alpha, int depth, int stencil, int samples, RenderTexture renderTexture) throws LWJGLErrorException {
this.width = width; this.width = width;
this.height = height; this.height = height;
@ -240,7 +241,7 @@ public final class Pbuffer {
int bpp, int alpha, int depth, int stencil, int bpp, int alpha, int depth, int stencil,
int samples, int samples,
IntBuffer pixelFormatCaps, int pixelFormatCapsSize, IntBuffer pixelFormatCaps, int pixelFormatCapsSize,
IntBuffer pBufferAttribs, int pBufferAttribsSize) throws Exception; IntBuffer pBufferAttribs, int pBufferAttribsSize) throws LWJGLErrorException;
/** /**
* Destroys the Pbuffer. After this call, there will be no valid GL rendering context - regardless of whether this Pbuffer was * Destroys the Pbuffer. After this call, there will be no valid GL rendering context - regardless of whether this Pbuffer was

View File

@ -52,6 +52,7 @@ import org.lwjgl.Sys;
import org.lwjgl.input.Controller; import org.lwjgl.input.Controller;
import org.lwjgl.input.Keyboard; import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse; import org.lwjgl.input.Mouse;
import org.lwjgl.LWJGLErrorException;
public final class Window { public final class Window {
@ -286,33 +287,33 @@ public final class Window {
* buffer, probably no alpha buffer, and probably no multisampling. * buffer, probably no alpha buffer, and probably no multisampling.
* <p>The window created will be set up in orthographic 2D projection, with 1:1 pixel ratio with GL coordinates. * <p>The window created will be set up in orthographic 2D projection, with 1:1 pixel ratio with GL coordinates.
* @param title * @param title
* @throws Exception * @throws LWJGLErrorException
*/ */
public static void create(String title) throws Exception { public static void create(String title) throws LWJGLErrorException {
create(title, Display.getDepth(), 0, 16, 8, 0); create(title, Display.getDepth(), 0, 16, 8, 0);
} }
/** /**
* Create a fullscreen window. If the underlying OS does not * Create a fullscreen window. If the underlying OS does not
* support fullscreen mode, then a window will be created instead. If this * support fullscreen mode, then a window will be created instead. If this
* fails too then an Exception will be thrown. * fails too then an LWJGLErrorException will be thrown.
* <p>The window created will be set up in orthographic 2D projection, with 1:1 pixel ratio with GL coordinates. * <p>The window created will be set up in orthographic 2D projection, with 1:1 pixel ratio with GL coordinates.
* @param title The title of the window * @param title The title of the window
* @param bpp Minimum bits per pixel * @param bpp Minimum bits per pixel
* @param alpha Minimum bits per pixel in alpha buffer * @param alpha Minimum bits per pixel in alpha buffer
* @param depth Minimum bits per pixel in depth buffer * @param depth Minimum bits per pixel in depth buffer
* @param stencil Minimum bits per pixel in stencil buffer * @param stencil Minimum bits per pixel in stencil buffer
* @throws Exception if the window could not be created for any reason; typically because * @throws LWJGLErrorException if the window could not be created for any reason; typically because
* the minimum requirements could not be met satisfactorily * the minimum requirements could not be met satisfactorily
*/ */
public static void create(String title, int bpp, int alpha, int depth, int stencil) throws Exception { public static void create(String title, int bpp, int alpha, int depth, int stencil) throws LWJGLErrorException {
create(title, bpp, alpha, depth, stencil, 0); create(title, bpp, alpha, depth, stencil, 0);
} }
/** /**
* Create a fullscreen window. If the underlying OS does not * Create a fullscreen window. If the underlying OS does not
* support fullscreen mode, then a window will be created instead. If this * support fullscreen mode, then a window will be created instead. If this
* fails too then an Exception will be thrown. * fails too then an LWJGLErrorException will be thrown.
* <p>The window created will be set up in orthographic 2D projection, with 1:1 pixel ratio with GL coordinates. * <p>The window created will be set up in orthographic 2D projection, with 1:1 pixel ratio with GL coordinates.
* @param title The title of the window * @param title The title of the window
* @param bpp Minimum bits per pixel * @param bpp Minimum bits per pixel
@ -321,10 +322,10 @@ public final class Window {
* @param stencil Minimum bits per pixel in stencil buffer * @param stencil Minimum bits per pixel in stencil buffer
* @param samples Minimum samples in multisample buffer (corresponds to GL_SAMPLES_ARB in GL_ARB_multisample spec). * @param samples Minimum samples in multisample buffer (corresponds to GL_SAMPLES_ARB in GL_ARB_multisample spec).
Pass 0 to disable multisampling. This parameter is ignored if GL_ARB_multisample is not supported. Pass 0 to disable multisampling. This parameter is ignored if GL_ARB_multisample is not supported.
* @throws Exception if the window could not be created for any reason; typically because * @throws LWJGLErrorException if the window could not be created for any reason; typically because
* the minimum requirements could not be met satisfactorily * the minimum requirements could not be met satisfactorily
*/ */
public static void create(String title, int bpp, int alpha, int depth, int stencil, int samples) throws Exception { public static void create(String title, int bpp, int alpha, int depth, int stencil, int samples) throws LWJGLErrorException {
if (isCreated()) if (isCreated())
throw new IllegalStateException("Only one LWJGL window may be instantiated at any one time."); throw new IllegalStateException("Only one LWJGL window may be instantiated at any one time.");
Window.fullscreen = true; Window.fullscreen = true;
@ -338,7 +339,7 @@ public final class Window {
/** /**
* Create a window. If the underlying OS does not have "floating" windows, then a fullscreen * Create a window. If the underlying OS does not have "floating" windows, then a fullscreen
* display will be created instead. If this fails too then an Exception will be thrown. * display will be created instead. If this fails too then an LWJGLErrorException will be thrown.
* If the window is created fullscreen, then its size may not match the specified size * If the window is created fullscreen, then its size may not match the specified size
* here. * here.
* <p>The window created will be set up in orthographic 2D projection, with 1:1 pixel ratio with GL coordinates. * <p>The window created will be set up in orthographic 2D projection, with 1:1 pixel ratio with GL coordinates.
@ -352,16 +353,16 @@ public final class Window {
* @param depth Minimum bits per pixel in depth buffer * @param depth Minimum bits per pixel in depth buffer
* @param samples Minimum samples in multisample buffer (corresponds to GL_SAMPLES_ARB in GL_ARB_multisample spec). * @param samples Minimum samples in multisample buffer (corresponds to GL_SAMPLES_ARB in GL_ARB_multisample spec).
Pass 0 to disable multisampling. This parameter is ignored if GL_ARB_multisample is not supported. Pass 0 to disable multisampling. This parameter is ignored if GL_ARB_multisample is not supported.
* @throws Exception if the window could not be created for any reason; typically because * @throws LWJGLErrorException if the window could not be created for any reason; typically because
* the minimum requirements could not be met satisfactorily * the minimum requirements could not be met satisfactorily
*/ */
public static void create(String title, int x, int y, int width, int height, int bpp, int alpha, int depth, int stencil) throws Exception { public static void create(String title, int x, int y, int width, int height, int bpp, int alpha, int depth, int stencil) throws LWJGLErrorException {
create(title, x, y, width, height, bpp, alpha, depth, stencil, 0); create(title, x, y, width, height, bpp, alpha, depth, stencil, 0);
} }
/** /**
* Create a window. If the underlying OS does not have "floating" windows, then a fullscreen * Create a window. If the underlying OS does not have "floating" windows, then a fullscreen
* display will be created instead. If this fails too then an Exception will be thrown. * display will be created instead. If this fails too then an LWJGLErrorException will be thrown.
* If the window is created fullscreen, then its size may not match the specified size * If the window is created fullscreen, then its size may not match the specified size
* here. * here.
* <p>The window created will be set up in orthographic 2D projection, with 1:1 pixel ratio with GL coordinates. * <p>The window created will be set up in orthographic 2D projection, with 1:1 pixel ratio with GL coordinates.
@ -376,11 +377,11 @@ public final class Window {
* @param stencil Minimum bits per pixel in stencil buffer * @param stencil Minimum bits per pixel in stencil buffer
* @param samples Minimum samples in multisample buffer (corresponds to GL_SAMPLES_ARB in GL_ARB_multisample spec). * @param samples Minimum samples in multisample buffer (corresponds to GL_SAMPLES_ARB in GL_ARB_multisample spec).
Pass 0 to disable multisampling. This parameter is ignored if GL_ARB_multisample is not supported. Pass 0 to disable multisampling. This parameter is ignored if GL_ARB_multisample is not supported.
* @throws Exception if the window could not be created for any reason; typically because * @throws LWJGLErrorException if the window could not be created for any reason; typically because
* the minimum requirements could not be met satisfactorily * the minimum requirements could not be met satisfactorily
*/ */
public static void create(String title, int x, int y, int width, int height, int bpp, int alpha, int depth, int stencil, int samples) public static void create(String title, int x, int y, int width, int height, int bpp, int alpha, int depth, int stencil, int samples)
throws Exception { throws LWJGLErrorException {
if (isCreated()) if (isCreated())
throw new IllegalStateException("Only one LWJGL window may be instantiated at any one time."); throw new IllegalStateException("Only one LWJGL window may be instantiated at any one time.");
Window.fullscreen = false; Window.fullscreen = false;
@ -394,7 +395,7 @@ public final class Window {
/** /**
* Create the native window peer. * Create the native window peer.
* @throws Exception * @throws LWJGLErrorException
*/ */
private static native void nCreate( private static native void nCreate(
String title, String title,
@ -408,9 +409,9 @@ public final class Window {
int depth, int depth,
int stencil, int stencil,
int samples) int samples)
throws Exception; throws LWJGLErrorException;
private static void createWindow(int bpp, int alpha, int depth, int stencil, int samples) throws Exception { private static void createWindow(int bpp, int alpha, int depth, int stencil, int samples) throws LWJGLErrorException {
nCreate(title, x, y, width, height, fullscreen, bpp, alpha, depth, stencil, samples); nCreate(title, x, y, width, height, fullscreen, bpp, alpha, depth, stencil, samples);
context = new Window(); context = new Window();
makeCurrent(); makeCurrent();
@ -430,7 +431,7 @@ public final class Window {
Mouse.create(); Mouse.create();
createdMouse = true; createdMouse = true;
Mouse.enableBuffer(); Mouse.enableBuffer();
} catch (Exception e) { } catch (LWJGLErrorException e) {
if (Sys.DEBUG) { if (Sys.DEBUG) {
e.printStackTrace(System.err); e.printStackTrace(System.err);
} else { } else {
@ -444,7 +445,7 @@ public final class Window {
createdKeyboard = true; createdKeyboard = true;
Keyboard.enableBuffer(); Keyboard.enableBuffer();
Keyboard.enableTranslation(); Keyboard.enableTranslation();
} catch (Exception e) { } catch (LWJGLErrorException e) {
if (Sys.DEBUG) { if (Sys.DEBUG) {
e.printStackTrace(System.err); e.printStackTrace(System.err);
} else { } else {
@ -456,7 +457,7 @@ public final class Window {
try { try {
Controller.create(); Controller.create();
createdController = true; createdController = true;
} catch (Exception e) { } catch (LWJGLErrorException e) {
if (Sys.DEBUG) { if (Sys.DEBUG) {
e.printStackTrace(System.err); e.printStackTrace(System.err);
} else { } else {

View File

@ -120,7 +120,7 @@ void throwOpenALException(JNIEnv * env, const char * err) {
} }
void throwException(JNIEnv * env, const char * err) { void throwException(JNIEnv * env, const char * err) {
throwGeneralException(env, "java/lang/Exception", err); throwGeneralException(env, "org/lwjgl/LWJGLErrorException", err);
} }
void doExtension(JNIEnv *env, jobject ext_set, const char *method_name, const char *ext) { void doExtension(JNIEnv *env, jobject ext_set, const char *method_name, const char *ext) {

View File

@ -197,7 +197,7 @@ static bool LoadOpenAL(JNIEnv *env, jobjectArray oalPaths) {
} }
env->ReleaseStringUTFChars(path, path_str); env->ReleaseStringUTFChars(path, path_str);
} }
throwOpenALException(env, "Could not load openal library."); throwException(env, "Could not load openal library.");
return false; return false;
} }
@ -235,27 +235,27 @@ void InitializeOpenAL(JNIEnv *env, jobjectArray oalPaths) {
alGetProcAddress = (alGetProcAddressPROC)extal_GetProcAddress("alGetProcAddress"); alGetProcAddress = (alGetProcAddressPROC)extal_GetProcAddress("alGetProcAddress");
if (alGetProcAddress == NULL) { if (alGetProcAddress == NULL) {
DeInitializeOpenAL(); DeInitializeOpenAL();
throwOpenALException(env, "Could not load alGetProcAddress function pointer."); throwException(env, "Could not load alGetProcAddress function pointer.");
return; return;
} }
//load basic OpenAL functions //load basic OpenAL functions
if(!LoadAL(env)) { if(!LoadAL(env)) {
DeInitializeOpenAL(); DeInitializeOpenAL();
throwOpenALException(env, "Could not load OpenAL function pointers."); throwException(env, "Could not load OpenAL function pointers.");
return; return;
} }
//load OpenAL context functions //load OpenAL context functions
if(!LoadALC(env)) { if(!LoadALC(env)) {
DeInitializeOpenAL(); DeInitializeOpenAL();
throwOpenALException(env, "Could not load ALC function pointers."); throwException(env, "Could not load ALC function pointers.");
return; return;
} }
//load OpenAL extensions //load OpenAL extensions
if(!LoadALExtensions()) { if(!LoadALExtensions()) {
DeInitializeOpenAL(); DeInitializeOpenAL();
throwOpenALException(env, "Could not load AL extension function pointers."); throwException(env, "Could not load AL extension function pointers.");
return; return;
} }
} }