On Oct 27, 2008, at 6:43 PM, Michael Franz wrote:

Mike,

If the runloop is running on Thread 0, can a thread that is not thread 0 pull events off the runloop by using NSApplication.sharedApplication(). nextEventMatchingMask() ?  Where events are the keyboard and mouse events.

Sorry, nope. I'm pretty sure this method has been tried by the SWT folks.

How does one 'park' thread 0?

pthread_mutex_lock()/pthread_cond_wait()/pthread_cond_signal(). When we load the AWT, we simply signal Thread 0, to continue and start pumping the event loop. If the AWT never comes up, the thread stays parked indefinitely. This is actually just a modification to how the JVM starts when you request a custom thread stack size for the main thread.

Michael

On Sun, Oct 12, 2008 at 11:21 AM, Mike Swingler <swingler@apple.com> wrote:

You can create runloops on other threads, but their sources will be setup by you. Only the runloop on Thread 0 receives keyboard and mouse events, which is why -XstartOnFirstThread is necessary when user-space code wants to pump the event loop. Otherwise, Thread 0 needs to be parked until it's time for the AWT to startup, and start running the show.

Cheers,
Mike Swingler
Java Runtime Engineer
Apple Inc.