Swing_Thread.future: plain Future.value if this is already Swing;
authorwenzelm
Sat, 09 Jan 2010 23:22:24 +0100
changeset 34299 68716caa7745
parent 34298 13e9f1f4acd9
child 34300 3f2e25dc99ab
Swing_Thread.future: plain Future.value if this is already Swing;
src/Pure/General/swing_thread.scala
--- a/src/Pure/General/swing_thread.scala	Sat Jan 09 18:23:02 2010 +0100
+++ b/src/Pure/General/swing_thread.scala	Sat Jan 09 23:22:24 2010 +0100
@@ -29,9 +29,14 @@
     result.get
   }
 
-  def future[A](body: => A): Future[A] = Future.fork { now(body) }
+  def future[A](body: => A): Future[A] =
+  {
+    if (SwingUtilities.isEventDispatchThread()) Future.value(body)
+    else Future.fork { now(body) }
+  }
 
-  def later(body: => Unit) {
+  def later(body: => Unit)
+  {
     if (SwingUtilities.isEventDispatchThread()) body
     else SwingUtilities.invokeLater(new Runnable { def run = body })
   }