diff -r 8b2c10cee766 glass-mat/src/com/sun/glass/ui/win/WinApplication.java --- a/glass-mat/src/com/sun/glass/ui/win/WinApplication.java Tue Aug 09 10:06:00 2011 -0400 +++ b/glass-mat/src/com/sun/glass/ui/win/WinApplication.java Thu Aug 18 12:27:14 2011 -0400 @@ -40,7 +40,27 @@ private native void _terminateLoop(); @Override protected void runLoop(final String args[], final Launchable launchable) { - final Thread toolkitThread = + long threadId = AccessController + .doPrivileged(new PrivilegedAction() { + public Long run() { + Long result = Long.getLong("javafx.eventLoop.threadId"); + return result == null ? 0 : result.longValue(); + } + }); + if (threadId != 0) { + String id = String.valueOf(threadId); + Thread[] threads = new Thread[Thread.activeCount()]; + int numThreads = Thread.enumerate(threads); + for (int i = 0; i < numThreads; i++) { + if (id.equals(String.valueOf(threads[i].getId()))) { + _init(); + setEventThread(threads[i]); + launchable.finishLaunching(args); + return; + } + } + } + final Thread toolkitThread = AccessController.doPrivileged(new PrivilegedAction() { public Thread run() { Thread th = new Thread(new Runnable() {