diff --git a/jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglAbstractDisplay.java b/jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglAbstractDisplay.java index 528c788ea..45f1d46ec 100644 --- a/jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglAbstractDisplay.java +++ b/jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglAbstractDisplay.java @@ -90,14 +90,14 @@ public abstract class LwjglAbstractDisplay extends LwjglContext implements Runna /** * Does LWJGL display initialization in the OpenGL thread */ - protected boolean initInThread(){ + protected boolean initInThread() { try { - if (!JmeSystem.isLowPermissions()){ + if (!JmeSystem.isLowPermissions()) { // Enable uncaught exception handler only for current thread Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { public void uncaughtException(Thread thread, Throwable thrown) { listener.handleError("Uncaught exception thrown in "+thread.toString(), thrown); - if (needClose.get()){ + if (needClose.get()) { // listener.handleError() has requested the // context to close. Satisfy request. deinitInThread(); @@ -115,15 +115,17 @@ public abstract class LwjglAbstractDisplay extends LwjglContext implements Runna created.set(true); super.internalCreate(); - } catch (Exception ex){ + } catch (Exception ex) { try { - if (Display.isCreated()) + if (Display.isCreated()) { Display.destroy(); + } } catch (Exception ex2){ logger.log(Level.WARNING, null, ex2); } listener.handleError("Failed to create display", ex); + createdLock.notifyAll(); // Release the lock, so start(true) doesn't deadlock. return false; // if we failed to create display, do not continue } @@ -131,7 +133,7 @@ public abstract class LwjglAbstractDisplay extends LwjglContext implements Runna return true; } - protected boolean checkGLError(){ + protected boolean checkGLError() { try { Util.checkGLError(); } catch (OpenGLException ex){