[kaffe] CVS kaffe (robilad): Resynced with GNU Classpath: AWT fixes and serialisation leanups
Kaffe CVS
cvs-commits at kaffe.org
Tue Jan 18 07:49:54 PST 2005
PatchSet 5873
Date: 2005/01/18 15:44:30
Author: robilad
Branch: HEAD
Tag: (none)
Log:
Resynced with GNU Classpath: AWT fixes and serialisation leanups
2005-01-18 Dalibor Topic <robilad at kaffe.org>
Resynced with GNU Classpath.
2005-01-18 Graydon Hoare <graydon at redhat.com>
* gnu/java/awt/ClasspathToolkit.java: Likewise.
* gnu/java/awt/peer/gtk/GtkToolkit.java: Likewise.
* java/awt/EventQueue.java (getNextEvent):
Adjust event loop to switch to native mode after 100ms.
* javax/swing/Timer.java (drainEvents): Reuse Runnable.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkGenericPeer.c
(Java_gnu_java_awt_peer_gtk_GtkGenericPeer_dispose):
Wake up event thread.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c
(Java_gnu_java_awt_peer_gtk_GtkToolkit_iterateNativeQueue):
Adjust event loop to switch to java mode after 100ms.
2005-01-18 Dalibor Topic <robilad at kaffe.org>
Resynced with GNU Classpath.
2005-01-18 Jeroen Frijters <jeroen at frijters.net>
* java/io/Externalizable.java,
java/io/Serializable.java
(serialVersionUID): Removed.
* java/rmi/server/RemoteObject.java,
java/rmi/server/UID.java
(serialVersionUID): Made private.
* java/rmi/server/RemoteRef.java,
java/rmi/server/ServerRef.java
(serialVersionUID): Set proper value.
* java/security/interfaces/DSAPrivateKey.java,
java/security/interfaces/DSAPublicKey.java,
java/security/interfaces/RSAMultiPrimePrivateCrtKey.java,
java/security/interfaces/RSAPrivateCrtKey.java,
java/security/interfaces/RSAPrivateKey.java,
java/security/interfaces/RSAPublicKey.java,
javax/crypto/SecretKey.java
(serialVersionUID): Added.
Members:
ChangeLog:1.3414->1.3415
libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkGenericPeer.c:1.3->1.4
libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c:1.3->1.4
libraries/javalib/gnu/java/awt/ClasspathToolkit.java:1.7->1.8
libraries/javalib/gnu/java/awt/peer/gtk/GtkToolkit.java:1.11->1.12
libraries/javalib/java/awt/EventQueue.java:1.14->1.15
libraries/javalib/java/io/Externalizable.java:1.5->1.6
libraries/javalib/java/io/Serializable.java:1.5->1.6
libraries/javalib/java/rmi/server/RemoteObject.java:1.4->1.5
libraries/javalib/java/rmi/server/RemoteRef.java:1.5->1.6
libraries/javalib/java/rmi/server/ServerRef.java:1.6->1.7
libraries/javalib/java/rmi/server/UID.java:1.6->1.7
libraries/javalib/java/security/interfaces/DSAPrivateKey.java:1.6->1.7
libraries/javalib/java/security/interfaces/DSAPublicKey.java:1.6->1.7
libraries/javalib/java/security/interfaces/RSAMultiPrimePrivateCrtKey.java:1.1->1.2
libraries/javalib/java/security/interfaces/RSAPrivateCrtKey.java:1.3->1.4
libraries/javalib/java/security/interfaces/RSAPrivateKey.java:1.5->1.6
libraries/javalib/java/security/interfaces/RSAPublicKey.java:1.5->1.6
libraries/javalib/javax/crypto/SecretKey.java:1.2->1.3
libraries/javalib/javax/swing/Timer.java:1.5->1.6
Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.3414 kaffe/ChangeLog:1.3415
--- kaffe/ChangeLog:1.3414 Tue Jan 18 15:23:53 2005
+++ kaffe/ChangeLog Tue Jan 18 15:44:30 2005
@@ -2,6 +2,48 @@
Resynced with GNU Classpath.
+ 2005-01-18 Jeroen Frijters <jeroen at frijters.net>
+
+ * java/io/Externalizable.java,
+ java/io/Serializable.java
+ (serialVersionUID): Removed.
+ * java/rmi/server/RemoteObject.java,
+ java/rmi/server/UID.java
+ (serialVersionUID): Made private.
+ * java/rmi/server/RemoteRef.java,
+ java/rmi/server/ServerRef.java
+ (serialVersionUID): Set proper value.
+ * java/security/interfaces/DSAPrivateKey.java,
+ java/security/interfaces/DSAPublicKey.java,
+ java/security/interfaces/RSAMultiPrimePrivateCrtKey.java,
+ java/security/interfaces/RSAPrivateCrtKey.java,
+ java/security/interfaces/RSAPrivateKey.java,
+ java/security/interfaces/RSAPublicKey.java,
+ javax/crypto/SecretKey.java
+ (serialVersionUID): Added.
+
+2005-01-18 Dalibor Topic <robilad at kaffe.org>
+
+ Resynced with GNU Classpath.
+
+ 2005-01-18 Graydon Hoare <graydon at redhat.com>
+
+ * gnu/java/awt/ClasspathToolkit.java: Likewise.
+ * gnu/java/awt/peer/gtk/GtkToolkit.java: Likewise.
+ * java/awt/EventQueue.java (getNextEvent):
+ Adjust event loop to switch to native mode after 100ms.
+ * javax/swing/Timer.java (drainEvents): Reuse Runnable.
+ * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkGenericPeer.c
+ (Java_gnu_java_awt_peer_gtk_GtkGenericPeer_dispose):
+ Wake up event thread.
+ * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c
+ (Java_gnu_java_awt_peer_gtk_GtkToolkit_iterateNativeQueue):
+ Adjust event loop to switch to java mode after 100ms.
+
+2005-01-18 Dalibor Topic <robilad at kaffe.org>
+
+ Resynced with GNU Classpath.
+
2005-01-17 Tom Tromey <tromey at redhat.com>
* java/text/MessageFormat.java (scanString): Changed how quoting
Index: kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkGenericPeer.c
diff -u kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkGenericPeer.c:1.3 kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkGenericPeer.c:1.4
--- kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkGenericPeer.c:1.3 Fri Oct 29 00:39:26 2004
+++ kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkGenericPeer.c Tue Jan 18 15:44:33 2005
@@ -56,6 +56,13 @@
gtk_widget_destroy (GTK_WIDGET (ptr));
gdk_threads_leave ();
+
+ /*
+ * Wake up the main thread, to make sure it re-checks the window
+ * destruction condition.
+ */
+
+ g_main_context_wakeup (NULL);
}
JNIEXPORT void JNICALL
Index: kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c
diff -u kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c:1.3 kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c:1.4
--- kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c:1.3 Thu Jan 13 08:02:17 2005
+++ kaffe/libraries/clib/awt/classpath-gtk/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c Tue Jan 18 15:44:33 2005
@@ -40,6 +40,8 @@
#include "gnu_java_awt_peer_gtk_GtkToolkit.h"
#include "gthread-jni.h"
+#include <sys/time.h>
+
#ifdef JVM_SUN
struct state_table *native_state_table;
struct state_table *native_global_ref_table;
@@ -298,12 +300,27 @@
dpi_conversion_factor = PANGO_SCALE * 72.0 / (int_dpi / PANGO_SCALE);
}
+static int
+within_human_latency_tolerance(struct timeval *init)
+{
+ struct timeval curr;
+ unsigned long milliseconds_elapsed;
+
+ gettimeofday(&curr, NULL);
+
+ milliseconds_elapsed = (((curr.tv_sec * 1000) + (curr.tv_usec / 1000))
+ - ((init->tv_sec * 1000) + (init->tv_usec / 1000)));
+
+ return milliseconds_elapsed < 100;
+}
+
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkToolkit_iterateNativeQueue
(JNIEnv *env,
jobject self __attribute__((unused)),
- jobject lockedQueue)
+ jobject lockedQueue,
+ jboolean block)
{
/* We're holding an EventQueue lock, and we're about to acquire the GDK
* lock before dropping the EventQueue lock. This can deadlock if someone
@@ -313,21 +330,30 @@
* acquiring the GDK lock and calling back into
* EventQueue.getNextEvent().
*/
+
+ struct timeval init;
+ gettimeofday(&init, NULL);
+
gdk_threads_enter ();
(*env)->MonitorExit (env, lockedQueue);
- /* It is quite important that this be a do .. while loop. The first pass
- * should do an iteration w/o a test so that it sleeps when there really
- * aren't any events; and the loop should continue for as many events as
- * there are to avoid pointless thrashing up and down through JNI (it
- * runs very slowly when this is not a loop).
- */
- do
+ if (block)
{
- gtk_main_iteration();
+
+ /* If we're blocking-when-empty, we want a do .. while loop. */
+ do
+ gtk_main_iteration ();
+ while (within_human_latency_tolerance (&init)
+ && gtk_events_pending ());
}
- while (gtk_events_pending());
-
+ else
+ {
+ /* If we're not blocking-when-empty, we want a while loop. */
+ while (within_human_latency_tolerance (&init)
+ && gtk_events_pending ())
+ gtk_main_iteration ();
+ }
+
(*env)->MonitorEnter (env, lockedQueue);
gdk_threads_leave ();
}
Index: kaffe/libraries/javalib/gnu/java/awt/ClasspathToolkit.java
diff -u kaffe/libraries/javalib/gnu/java/awt/ClasspathToolkit.java:1.7 kaffe/libraries/javalib/gnu/java/awt/ClasspathToolkit.java:1.8
--- kaffe/libraries/javalib/gnu/java/awt/ClasspathToolkit.java:1.7 Thu Jan 13 08:56:32 2005
+++ kaffe/libraries/javalib/gnu/java/awt/ClasspathToolkit.java Tue Jan 18 15:44:33 2005
@@ -367,5 +367,5 @@
public abstract boolean nativeQueueEmpty();
public abstract void wakeNativeQueue();
- public abstract void iterateNativeQueue(EventQueue locked);
+ public abstract void iterateNativeQueue(EventQueue locked, boolean block);
}
Index: kaffe/libraries/javalib/gnu/java/awt/peer/gtk/GtkToolkit.java
diff -u kaffe/libraries/javalib/gnu/java/awt/peer/gtk/GtkToolkit.java:1.11 kaffe/libraries/javalib/gnu/java/awt/peer/gtk/GtkToolkit.java:1.12
--- kaffe/libraries/javalib/gnu/java/awt/peer/gtk/GtkToolkit.java:1.11 Thu Jan 13 08:56:34 2005
+++ kaffe/libraries/javalib/gnu/java/awt/peer/gtk/GtkToolkit.java Tue Jan 18 15:44:36 2005
@@ -656,6 +656,6 @@
public native boolean nativeQueueEmpty();
public native void wakeNativeQueue();
- public native void iterateNativeQueue(EventQueue locked);
+ public native void iterateNativeQueue(EventQueue locked, boolean block);
} // class GtkToolkit
Index: kaffe/libraries/javalib/java/awt/EventQueue.java
diff -u kaffe/libraries/javalib/java/awt/EventQueue.java:1.14 kaffe/libraries/javalib/java/awt/EventQueue.java:1.15
--- kaffe/libraries/javalib/java/awt/EventQueue.java:1.14 Thu Jan 13 08:02:25 2005
+++ kaffe/libraries/javalib/java/awt/EventQueue.java Tue Jan 18 15:44:37 2005
@@ -76,6 +76,9 @@
private EventDispatchThread dispatchThread = new EventDispatchThread(this);
private boolean shutdown = false;
+ private long lastNativeQueueAccess = 0;
+ private long humanLatencyThreshold = 100;
+
synchronized void setShutdown (boolean b)
{
shutdown = b;
@@ -122,6 +125,16 @@
{
if (next != null)
return next.getNextEvent();
+
+ ClasspathToolkit tk = ((ClasspathToolkit) Toolkit.getDefaultToolkit());
+ long curr = System.currentTimeMillis();
+
+ if (! tk.nativeQueueEmpty() &&
+ (curr - lastNativeQueueAccess > humanLatencyThreshold))
+ {
+ tk.iterateNativeQueue(this, false);
+ lastNativeQueueAccess = curr;
+ }
while (next_in == next_out)
{
@@ -143,7 +156,8 @@
if (isShutdown())
throw new InterruptedException();
- ((ClasspathToolkit) Toolkit.getDefaultToolkit()).iterateNativeQueue(this);
+ tk.iterateNativeQueue(this, true);
+ lastNativeQueueAccess = System.currentTimeMillis();
}
else
{
Index: kaffe/libraries/javalib/java/io/Externalizable.java
diff -u kaffe/libraries/javalib/java/io/Externalizable.java:1.5 kaffe/libraries/javalib/java/io/Externalizable.java:1.6
--- kaffe/libraries/javalib/java/io/Externalizable.java:1.5 Wed Oct 22 10:34:53 2003
+++ kaffe/libraries/javalib/java/io/Externalizable.java Tue Jan 18 15:44:38 2005
@@ -60,8 +60,6 @@
*/
public interface Externalizable extends Serializable
{
- long serialVersionUID = -282491828744381764L;
-
/**
* This method restores an object's state by reading in the instance data
* for the object from the passed in stream. Note that this stream is not
Index: kaffe/libraries/javalib/java/io/Serializable.java
diff -u kaffe/libraries/javalib/java/io/Serializable.java:1.5 kaffe/libraries/javalib/java/io/Serializable.java:1.6
--- kaffe/libraries/javalib/java/io/Serializable.java:1.5 Wed Oct 22 10:34:53 2003
+++ kaffe/libraries/javalib/java/io/Serializable.java Tue Jan 18 15:44:38 2005
@@ -51,5 +51,4 @@
*/
public interface Serializable
{
- long serialVersionUID = 1196656838076753133L;
} // interface Serializable
Index: kaffe/libraries/javalib/java/rmi/server/RemoteObject.java
diff -u kaffe/libraries/javalib/java/rmi/server/RemoteObject.java:1.4 kaffe/libraries/javalib/java/rmi/server/RemoteObject.java:1.5
--- kaffe/libraries/javalib/java/rmi/server/RemoteObject.java:1.4 Sat Oct 16 16:06:54 2004
+++ kaffe/libraries/javalib/java/rmi/server/RemoteObject.java Tue Jan 18 15:44:38 2005
@@ -49,7 +49,7 @@
public abstract class RemoteObject
implements Remote, Serializable {
-public static final long serialVersionUID = -3215090123894869218l;
+private static final long serialVersionUID = -3215090123894869218l;
protected transient RemoteRef ref;
Index: kaffe/libraries/javalib/java/rmi/server/RemoteRef.java
diff -u kaffe/libraries/javalib/java/rmi/server/RemoteRef.java:1.5 kaffe/libraries/javalib/java/rmi/server/RemoteRef.java:1.6
--- kaffe/libraries/javalib/java/rmi/server/RemoteRef.java:1.5 Sat Oct 16 16:06:54 2004
+++ kaffe/libraries/javalib/java/rmi/server/RemoteRef.java Tue Jan 18 15:44:38 2005
@@ -46,7 +46,7 @@
public interface RemoteRef extends Externalizable
{
- long serialVersionUID = 0;
+ long serialVersionUID = 3632638527362204081L;
String packagePrefix = "gnu.java.rmi.server";
Index: kaffe/libraries/javalib/java/rmi/server/ServerRef.java
diff -u kaffe/libraries/javalib/java/rmi/server/ServerRef.java:1.6 kaffe/libraries/javalib/java/rmi/server/ServerRef.java:1.7
--- kaffe/libraries/javalib/java/rmi/server/ServerRef.java:1.6 Sat Oct 23 18:03:42 2004
+++ kaffe/libraries/javalib/java/rmi/server/ServerRef.java Tue Jan 18 15:44:38 2005
@@ -43,7 +43,7 @@
public interface ServerRef extends RemoteRef
{
- long serialVersionUID = 0;
+ long serialVersionUID = -4557750989390278438L;
RemoteStub exportObject(Remote obj, Object data) throws RemoteException;
Index: kaffe/libraries/javalib/java/rmi/server/UID.java
diff -u kaffe/libraries/javalib/java/rmi/server/UID.java:1.6 kaffe/libraries/javalib/java/rmi/server/UID.java:1.7
--- kaffe/libraries/javalib/java/rmi/server/UID.java:1.6 Sat Oct 23 18:03:42 2004
+++ kaffe/libraries/javalib/java/rmi/server/UID.java Tue Jan 18 15:44:38 2005
@@ -45,7 +45,7 @@
public final class UID implements Serializable
{
-public static final long serialVersionUID = 1086053664494604050L;
+private static final long serialVersionUID = 1086053664494604050L;
private static final Object lock = UID.class;
private static long baseTime = System.currentTimeMillis();
Index: kaffe/libraries/javalib/java/security/interfaces/DSAPrivateKey.java
diff -u kaffe/libraries/javalib/java/security/interfaces/DSAPrivateKey.java:1.6 kaffe/libraries/javalib/java/security/interfaces/DSAPrivateKey.java:1.7
--- kaffe/libraries/javalib/java/security/interfaces/DSAPrivateKey.java:1.6 Fri Apr 23 18:23:48 2004
+++ kaffe/libraries/javalib/java/security/interfaces/DSAPrivateKey.java Tue Jan 18 15:44:40 2005
@@ -50,6 +50,11 @@
public interface DSAPrivateKey extends DSAKey, PrivateKey
{
/**
+ * The version identifier used for serialization.
+ */
+ long serialVersionUID = 7776497482533790279L;
+
+ /**
* This method returns the value of the DSA private key
*/
BigInteger getX();
Index: kaffe/libraries/javalib/java/security/interfaces/DSAPublicKey.java
diff -u kaffe/libraries/javalib/java/security/interfaces/DSAPublicKey.java:1.6 kaffe/libraries/javalib/java/security/interfaces/DSAPublicKey.java:1.7
--- kaffe/libraries/javalib/java/security/interfaces/DSAPublicKey.java:1.6 Fri Apr 23 18:23:48 2004
+++ kaffe/libraries/javalib/java/security/interfaces/DSAPublicKey.java Tue Jan 18 15:44:40 2005
@@ -50,6 +50,11 @@
public interface DSAPublicKey extends DSAKey, PublicKey
{
/**
+ * The version identifier used for serialization.
+ */
+ long serialVersionUID = 1234526332779022332L;
+
+ /**
* This method returns the value of the DSA public key
*/
BigInteger getY();
Index: kaffe/libraries/javalib/java/security/interfaces/RSAMultiPrimePrivateCrtKey.java
diff -u kaffe/libraries/javalib/java/security/interfaces/RSAMultiPrimePrivateCrtKey.java:1.1 kaffe/libraries/javalib/java/security/interfaces/RSAMultiPrimePrivateCrtKey.java:1.2
--- kaffe/libraries/javalib/java/security/interfaces/RSAMultiPrimePrivateCrtKey.java:1.1 Thu Aug 7 18:36:37 2003
+++ kaffe/libraries/javalib/java/security/interfaces/RSAMultiPrimePrivateCrtKey.java Tue Jan 18 15:44:40 2005
@@ -54,6 +54,7 @@
{
// Constants
// --------------------------------------------------------------------------
+ long serialVersionUID = 618058533534628008L;
// Methods
// --------------------------------------------------------------------------
Index: kaffe/libraries/javalib/java/security/interfaces/RSAPrivateCrtKey.java
diff -u kaffe/libraries/javalib/java/security/interfaces/RSAPrivateCrtKey.java:1.3 kaffe/libraries/javalib/java/security/interfaces/RSAPrivateCrtKey.java:1.4
--- kaffe/libraries/javalib/java/security/interfaces/RSAPrivateCrtKey.java:1.3 Wed Oct 22 10:34:58 2003
+++ kaffe/libraries/javalib/java/security/interfaces/RSAPrivateCrtKey.java Tue Jan 18 15:44:40 2005
@@ -49,6 +49,8 @@
*/
public interface RSAPrivateCrtKey extends RSAPrivateKey
{
+ long serialVersionUID = -5682214253527700368L;
+
/**
* Returns the public exponent for this key
*
Index: kaffe/libraries/javalib/java/security/interfaces/RSAPrivateKey.java
diff -u kaffe/libraries/javalib/java/security/interfaces/RSAPrivateKey.java:1.5 kaffe/libraries/javalib/java/security/interfaces/RSAPrivateKey.java:1.6
--- kaffe/libraries/javalib/java/security/interfaces/RSAPrivateKey.java:1.5 Fri Apr 23 18:23:48 2004
+++ kaffe/libraries/javalib/java/security/interfaces/RSAPrivateKey.java Tue Jan 18 15:44:40 2005
@@ -49,6 +49,8 @@
*/
public interface RSAPrivateKey extends PrivateKey, RSAKey
{
+ long serialVersionUID = 5187144804936595022L;
+
/**
* Returns the private exponent value for this key
*
Index: kaffe/libraries/javalib/java/security/interfaces/RSAPublicKey.java
diff -u kaffe/libraries/javalib/java/security/interfaces/RSAPublicKey.java:1.5 kaffe/libraries/javalib/java/security/interfaces/RSAPublicKey.java:1.6
--- kaffe/libraries/javalib/java/security/interfaces/RSAPublicKey.java:1.5 Fri Apr 23 18:23:48 2004
+++ kaffe/libraries/javalib/java/security/interfaces/RSAPublicKey.java Tue Jan 18 15:44:40 2005
@@ -49,6 +49,8 @@
*/
public interface RSAPublicKey extends PublicKey, RSAKey
{
+ long serialVersionUID = -8727434096241101194L;
+
/**
* Returns the public exponent value for this key
*
Index: kaffe/libraries/javalib/javax/crypto/SecretKey.java
diff -u kaffe/libraries/javalib/javax/crypto/SecretKey.java:1.2 kaffe/libraries/javalib/javax/crypto/SecretKey.java:1.3
--- kaffe/libraries/javalib/javax/crypto/SecretKey.java:1.2 Sat Oct 23 11:24:22 2004
+++ kaffe/libraries/javalib/javax/crypto/SecretKey.java Tue Jan 18 15:44:40 2005
@@ -61,4 +61,5 @@
*/
public interface SecretKey extends Key
{
+ long serialVersionUID = -4795878709595146952L;
}
Index: kaffe/libraries/javalib/javax/swing/Timer.java
diff -u kaffe/libraries/javalib/javax/swing/Timer.java:1.5 kaffe/libraries/javalib/javax/swing/Timer.java:1.6
--- kaffe/libraries/javalib/javax/swing/Timer.java:1.5 Sun Oct 24 13:39:15 2004
+++ kaffe/libraries/javalib/javax/swing/Timer.java Tue Jan 18 15:44:41 2005
@@ -72,6 +72,14 @@
/** DOCUMENT ME! */
private Waker waker;
+ private Runnable drainer = new Runnable()
+ {
+ public void run()
+ {
+ drainEvents();
+ }
+ };
+
/**
* DOCUMENT ME!
*/
@@ -81,14 +89,7 @@
{
queue++;
if (queue == 1)
- SwingUtilities.invokeLater(new Runnable()
- {
- public void run()
- {
- drainEvents();
- }
- });
-
+ SwingUtilities.invokeLater(drainer);
}
}
More information about the kaffe
mailing list