diff --git a/jme3-lwjgl3/src/main/java/com/jme3/system/lwjgl/LwjglCanvas.java b/jme3-lwjgl3/src/main/java/com/jme3/system/lwjgl/LwjglCanvas.java index 6fa525f355..086ed18995 100644 --- a/jme3-lwjgl3/src/main/java/com/jme3/system/lwjgl/LwjglCanvas.java +++ b/jme3-lwjgl3/src/main/java/com/jme3/system/lwjgl/LwjglCanvas.java @@ -645,11 +645,18 @@ protected void runLoop() { getPrintContextInitInfo(canvas.getGLDataEffective()))); } - try { - if (signalTerminate.tryAcquire(10, TimeUnit.MILLISECONDS)) { - canvas.doDisposeCanvas(); - } - } catch (InterruptedException ignored) { } + // On platforms other than Windows, an ideal amount of time is needed + // for the CPU to breathe and avoid interrupting the AWT and OpenGL + // context. This ensures a smooth experience between AWT and OpenGL. + Platform platform = Platform.get(); + if (platform != Platform.WINDOWS) { + try { + // Ideal time: 5 milliseconds + if (signalTerminate.tryAcquire(5, TimeUnit.MILLISECONDS)) { + canvas.doDisposeCanvas(); + } + } catch (InterruptedException ignored) { } + } } /** diff --git a/jme3-lwjgl3/src/main/java/com/jme3/system/lwjglx/LwjglxDefaultGLPlatform.java b/jme3-lwjgl3/src/main/java/com/jme3/system/lwjglx/LwjglxDefaultGLPlatform.java index 3f7be3bcf3..830cd8fd72 100644 --- a/jme3-lwjgl3/src/main/java/com/jme3/system/lwjglx/LwjglxDefaultGLPlatform.java +++ b/jme3-lwjgl3/src/main/java/com/jme3/system/lwjglx/LwjglxDefaultGLPlatform.java @@ -39,7 +39,7 @@ * @author wil */ public final class LwjglxDefaultGLPlatform { - + /** * Returns a drawing platform based on the platform it is running on. * @return LwjglxGLPlatform @@ -58,9 +58,9 @@ public static LwjglxGLPlatform createLwjglxGLPlatform() throws UnsupportedOperat throw new UnsupportedOperationException("Platform " + Platform.get() + " not yet supported"); } } - + /** * private constructor. */ private LwjglxDefaultGLPlatform() {} -} +} \ No newline at end of file