[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