diff options
author | Sven Gothel <[email protected]> | 2013-06-24 17:12:02 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2013-06-24 17:12:02 +0200 |
commit | 01d2f02624e6e6c6877fbf3eb5b830f49c3e06af (patch) | |
tree | addb78883484264ec216bcdbaef3b3c3423aaf5a /src | |
parent | 8f3b2a4cc14be60681a7bfae0507655cc5702836 (diff) |
Apply workaround of Java7 AWT Robot.waitForIdle()/EDT bug for all Robot.waitForIdle() calls.
See commit 8f3b2a4cc14be60681a7bfae0507655cc5702836
Diffstat (limited to 'src')
5 files changed, 26 insertions, 22 deletions
diff --git a/src/test/com/jogamp/opengl/test/junit/newt/event/TestNewtKeyCodeModifiersAWT.java b/src/test/com/jogamp/opengl/test/junit/newt/event/TestNewtKeyCodeModifiersAWT.java index c1b572df3..19d739a75 100644 --- a/src/test/com/jogamp/opengl/test/junit/newt/event/TestNewtKeyCodeModifiersAWT.java +++ b/src/test/com/jogamp/opengl/test/junit/newt/event/TestNewtKeyCodeModifiersAWT.java @@ -164,7 +164,7 @@ public class TestNewtKeyCodeModifiersAWT extends UITestCase { keyAdapter.reset(); AWTRobotUtil.newtKeyPress(0, robot, true, keyCode, 10); // press keyCode AWTRobotUtil.newtKeyPress(0, robot, false, keyCode, 100); // release keyCode - robot.waitForIdle(); + AWTRobotUtil.waitForIdle(robot); for(int j=0; j < 100 && keyAdapter.getQueueSize() < 2; j++) { // wait until events are collected robot.delay(100); } @@ -173,7 +173,7 @@ public class TestNewtKeyCodeModifiersAWT extends UITestCase { AWTRobotUtil.newtKeyPress(0, robot, true, keyCode, 10); // press keyCode AWTRobotUtil.newtKeyPress(0, robot, false, keyCode, 10); // release keyCode AWTRobotUtil.newtKeyPress(0, robot, false, modifierKey, 100); // release MOD - robot.waitForIdle(); + AWTRobotUtil.waitForIdle(robot); for(int j=0; j < 100 && keyAdapter.getQueueSize() < 2+4; j++) { // wait until events are collected robot.delay(100); } @@ -212,7 +212,7 @@ public class TestNewtKeyCodeModifiersAWT extends UITestCase { AWTRobotUtil.newtKeyPress(0, robot, false, m2k, 10); // release MOD AWTRobotUtil.newtKeyPress(0, robot, false, m1k, 10); // release MOD - robot.waitForIdle(); + AWTRobotUtil.waitForIdle(robot); for(int j=0; j < 100 && keyAdapter.getQueueSize() < 4+4; j++) { // wait until events are collected robot.delay(100); } diff --git a/src/test/com/jogamp/opengl/test/junit/newt/event/TestNewtKeyCodesAWT.java b/src/test/com/jogamp/opengl/test/junit/newt/event/TestNewtKeyCodesAWT.java index a5f47e870..e1254ae6d 100644 --- a/src/test/com/jogamp/opengl/test/junit/newt/event/TestNewtKeyCodesAWT.java +++ b/src/test/com/jogamp/opengl/test/junit/newt/event/TestNewtKeyCodesAWT.java @@ -210,7 +210,7 @@ public class TestNewtKeyCodesAWT extends UITestCase { break; } eventCount++; - robot.waitForIdle(); + AWTRobotUtil.waitForIdle(robot); } for(int j=0; j < 20 && keyAdapter.getQueueSize() < eventCount; j++) { // wait until events are collected robot.delay(100); diff --git a/src/test/com/jogamp/opengl/test/junit/newt/event/TestNewtKeyEventAutoRepeatAWT.java b/src/test/com/jogamp/opengl/test/junit/newt/event/TestNewtKeyEventAutoRepeatAWT.java index b6c15231c..508ad2cbf 100644 --- a/src/test/com/jogamp/opengl/test/junit/newt/event/TestNewtKeyEventAutoRepeatAWT.java +++ b/src/test/com/jogamp/opengl/test/junit/newt/event/TestNewtKeyEventAutoRepeatAWT.java @@ -162,9 +162,9 @@ public class TestNewtKeyEventAutoRepeatAWT extends UITestCase { for(int i=0; i<loops; i++) { System.err.println("+++ KEY Event Auto-Repeat START Input Loop: "+i); AWTRobotUtil.keyPress(0, robot, true, java.awt.event.KeyEvent.VK_A, pressDurationMS); - robot.waitForIdle(); + AWTRobotUtil.waitForIdle(robot); AWTRobotUtil.keyPress(0, robot, false, java.awt.event.KeyEvent.VK_A, 500); // 1s .. no AR anymore - robot.waitForIdle(); + AWTRobotUtil.waitForIdle(robot); final int minCodeCount = firstIdx + 2; final int desiredCodeCount = firstIdx + 4; for(int j=0; j < 10 && keyAdapter.getQueueSize() < desiredCodeCount; j++) { // wait until events are collected @@ -183,9 +183,9 @@ public class TestNewtKeyEventAutoRepeatAWT extends UITestCase { // add a pair of normal press/release in between auto-repeat! firstIdx = keyEvents.size(); AWTRobotUtil.keyPress(0, robot, true, java.awt.event.KeyEvent.VK_B, 10); - robot.waitForIdle(); + AWTRobotUtil.waitForIdle(robot); AWTRobotUtil.keyPress(0, robot, false, java.awt.event.KeyEvent.VK_B, 250); - robot.waitForIdle(); + AWTRobotUtil.waitForIdle(robot); for(int j=0; j < 20 && keyAdapter.getQueueSize() < firstIdx+3; j++) { // wait until events are collected robot.delay(100); } diff --git a/src/test/com/jogamp/opengl/test/junit/newt/event/TestNewtKeyEventOrderAWT.java b/src/test/com/jogamp/opengl/test/junit/newt/event/TestNewtKeyEventOrderAWT.java index 3a95eacae..961b4969e 100644 --- a/src/test/com/jogamp/opengl/test/junit/newt/event/TestNewtKeyEventOrderAWT.java +++ b/src/test/com/jogamp/opengl/test/junit/newt/event/TestNewtKeyEventOrderAWT.java @@ -165,23 +165,23 @@ public class TestNewtKeyEventOrderAWT extends UITestCase { // 1 AWTRobotUtil.keyPress(0, robot, true, java.awt.event.KeyEvent.VK_A, 10); AWTRobotUtil.keyPress(0, robot, false, java.awt.event.KeyEvent.VK_A, 100); - robot.waitForIdle(); + AWTRobotUtil.waitForIdle(robot); // 2 AWTRobotUtil.keyPress(0, robot, true, java.awt.event.KeyEvent.VK_B, 10); AWTRobotUtil.keyPress(0, robot, false, java.awt.event.KeyEvent.VK_B, 100); - robot.waitForIdle(); + AWTRobotUtil.waitForIdle(robot); // 3 + 4 AWTRobotUtil.keyPress(0, robot, true, java.awt.event.KeyEvent.VK_A, 10); AWTRobotUtil.keyPress(0, robot, true, java.awt.event.KeyEvent.VK_B, 10); AWTRobotUtil.keyPress(0, robot, false, java.awt.event.KeyEvent.VK_A, 10); AWTRobotUtil.keyPress(0, robot, false, java.awt.event.KeyEvent.VK_B, 10); - robot.waitForIdle(); + AWTRobotUtil.waitForIdle(robot); // 5 + 6 AWTRobotUtil.keyPress(0, robot, true, java.awt.event.KeyEvent.VK_A, 10); AWTRobotUtil.keyPress(0, robot, true, java.awt.event.KeyEvent.VK_B, 10); AWTRobotUtil.keyPress(0, robot, false, java.awt.event.KeyEvent.VK_B, 10); AWTRobotUtil.keyPress(0, robot, false, java.awt.event.KeyEvent.VK_A, 10); - robot.waitForIdle(); + AWTRobotUtil.waitForIdle(robot); } robot.delay(250); // dumpKeyEvents(keyAdapter.getQueued()); diff --git a/src/test/com/jogamp/opengl/test/junit/util/AWTRobotUtil.java b/src/test/com/jogamp/opengl/test/junit/util/AWTRobotUtil.java index 8a73d3363..49c56bee1 100644 --- a/src/test/com/jogamp/opengl/test/junit/util/AWTRobotUtil.java +++ b/src/test/com/jogamp/opengl/test/junit/util/AWTRobotUtil.java @@ -74,6 +74,7 @@ public class AWTRobotUtil { // System.err.println("AWT EDT alive: "+isAWTEDTAlive()); } + /** Probes whether AWT's EDT is alive or not. */ public static boolean isAWTEDTAlive() { if( EventQueue.isDispatchThread() ) { return true; @@ -96,12 +97,19 @@ public class AWTRobotUtil { return awtEDTAliveFlag; } } + /** Throws Error if {@link #isAWTEDTAlive()} returns false. */ public static void validateAWTEDTIsAlive() { if( !isAWTEDTAlive() ) { throw new Error("AWT EDT not alive"); } } + /** Issuing {@link #validateAWTEDTIsAlive()} before calling {@link Robot#waitForIdle()}. */ + public static void waitForIdle(Robot robot) { + validateAWTEDTIsAlive(); + robot.waitForIdle(); + } + public static void clearAWTFocus(Robot robot) throws InterruptedException, InvocationTargetException, AWTException { if(null == robot) { robot = new Robot(); @@ -293,8 +301,7 @@ public class AWTRobotUtil { final int mouseButton = java.awt.event.InputEvent.BUTTON1_MASK; centerMouse(robot, obj, onTitleBarIfWindow); - validateAWTEDTIsAlive(); - robot.waitForIdle(); + waitForIdle(robot); robot.mousePress(mouseButton); robot.mouseRelease(mouseButton); final int d = getClickTimeout(obj) + 1; @@ -443,18 +450,16 @@ public class AWTRobotUtil { } private static void awtRobotKeyPress(final Robot robot, final int keyCode, final int msDelay) { - validateAWTEDTIsAlive(); - robot.waitForIdle(); + waitForIdle(robot); robot.keyPress(keyCode); robot.delay(msDelay); - robot.waitForIdle(); + waitForIdle(robot); } private static void awtRobotKeyRelease(final Robot robot, final int keyCode, final int msDelay) { - validateAWTEDTIsAlive(); - robot.waitForIdle(); + waitForIdle(robot); robot.keyRelease(keyCode); robot.delay(msDelay); - robot.waitForIdle(); + waitForIdle(robot); } public static int keyType(int i, Robot robot, int keyCode, @@ -592,8 +597,7 @@ public class AWTRobotUtil { } final int c0 = null != counter ? counter.getCount() : 0; if(DEBUG) { System.err.println(i+":"+j+" MC1.1: "+counter); } - validateAWTEDTIsAlive(); - robot.waitForIdle(); + waitForIdle(robot); robot.mousePress(mouseButton); robot.mouseRelease(mouseButton); if(DEBUG) { System.err.println(i+":"+j+" MC1.2: "+counter); } |