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:");