src/java.desktop/share/classes/java/awt/Robot.java

Print this page

        

*** 32,44 **** --- 32,47 ---- import java.awt.image.DirectColorModel; import java.awt.image.Raster; import java.awt.image.WritableRaster; import java.awt.peer.RobotPeer; import java.lang.reflect.InvocationTargetException; + import java.security.AccessController; + import sun.awt.AWTPermissions; import sun.awt.ComponentFactory; import sun.awt.SunToolkit; + import sun.awt.OSInfo; import sun.awt.image.SunWritableRaster; /** * This class is used to generate native system input events * for the purposes of test automation, self-running demos, and
*** 553,571 **** * Waits until all events currently on the event queue have been processed. * @throws IllegalThreadStateException if called on the AWT event dispatching thread */ public synchronized void waitForIdle() { checkNotDispatchThread(); ! // post a dummy event to the queue so we know when ! // all the events before it have been processed try { SunToolkit.flushPendingEvents(); EventQueue.invokeAndWait( new Runnable() { public void run() { // dummy implementation } } ); } catch(InterruptedException ite) { System.err.println("Robot.waitForIdle, non-fatal exception caught:"); ite.printStackTrace(); } catch(InvocationTargetException ine) { System.err.println("Robot.waitForIdle, non-fatal exception caught:"); --- 556,580 ---- * Waits until all events currently on the event queue have been processed. * @throws IllegalThreadStateException if called on the AWT event dispatching thread */ public synchronized void waitForIdle() { checkNotDispatchThread(); ! try { SunToolkit.flushPendingEvents(); + // 7185258: realSync() call blocks all DnD tests on OS X + if (AccessController.doPrivileged(OSInfo.getOSTypeAction()) = OSInfo.OSType.MACOSX) { + // post a dummy event to the queue so we know when + // all the events before it have been processed EventQueue.invokeAndWait( new Runnable() { public void run() { // dummy implementation } } ); + } else { + ((SunToolkit) Toolkit.getDefaultToolkit()).realSync(); + } } catch(InterruptedException ite) { System.err.println("Robot.waitForIdle, non-fatal exception caught:"); ite.printStackTrace(); } catch(InvocationTargetException ine) { System.err.println("Robot.waitForIdle, non-fatal exception caught:");