From: Thomas Fitzsimmons Date: Tue, 22 Feb 2005 06:18:59 +0000 (+0000) Subject: Robot.java (waitForIdle): Call invokeAndWait on an empty Runnable. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d5d74adf8ac65309646e45e6f1c35ed0334a55df;p=gcc.git Robot.java (waitForIdle): Call invokeAndWait on an empty Runnable. 2005-02-22 Thomas Fitzsimmons * java/awt/Robot.java (waitForIdle): Call invokeAndWait on an empty Runnable. From-SVN: r95384 --- diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 904e5b828ab..03aebc67d93 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,5 +1,8 @@ 2005-02-22 Thomas Fitzsimmons + * java/awt/Robot.java (waitForIdle): Call invokeAndWait on an + empty Runnable. + PR libgcj/17952: * gnu/java/awt/peer/gtk/GtkWindowPeer.java, jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c diff --git a/libjava/java/awt/Robot.java b/libjava/java/awt/Robot.java index 49726c8a192..23b6f810442 100644 --- a/libjava/java/awt/Robot.java +++ b/libjava/java/awt/Robot.java @@ -40,6 +40,7 @@ package java.awt; import gnu.java.awt.ClasspathToolkit; +import java.lang.reflect.InvocationTargetException; import java.awt.event.InputEvent; import java.awt.image.BufferedImage; import java.awt.peer.RobotPeer; @@ -53,8 +54,8 @@ import java.awt.peer.RobotPeer; * * Since Robot generates native windowing system events, rather than * simply inserting {@link AWTEvents} on the AWT event queue, its use - * is not restricted to Java programs. It can be to programatically - * drive any graphical application. + * is not restricted to Java programs. It can be used to + * programatically drive any graphical application. * * This implementation requires an X server that supports the XTest * extension. @@ -384,7 +385,8 @@ public class Robot } /** - * Wait until the event dispatch thread is idle. + * Wait until all events currently on the event queue have been + * dispatched. */ public void waitForIdle () { @@ -393,17 +395,17 @@ public class Robot + "the event dispatch thread"); EventQueue q = Toolkit.getDefaultToolkit ().getSystemEventQueue (); - - while (q.peekEvent () != null) + try + { + q.invokeAndWait (new Runnable () { public void run () { } }); + } + catch (InterruptedException e) + { + System.err.println ("Robot: waitForIdle interrupted"); + } + catch (InvocationTargetException e) { - try - { - wait (); - } - catch (InterruptedException e) - { - System.err.println ("Robot: waitForIdle interrupted"); - } + System.err.println ("Robot: waitForIdle cannot invoke target"); } }