--- old/src/java.desktop/macosx/native/libawt_lwawt/awt/LWCToolkit.m 2015-06-23 19:54:16.108641000 +0300 +++ new/src/java.desktop/macosx/native/libawt_lwawt/awt/LWCToolkit.m 2015-06-23 19:54:15.436555700 +0300 @@ -376,7 +376,7 @@ if ([sharedApp isKindOfClass:[NSApplicationAWT class]]) { NSApplicationAWT* theApp = (NSApplicationAWT*)sharedApp; [theApp postDummyEvent]; - [theApp waitForDummyEvent]; + [theApp waitForDummyEvent:(int)timeout]; } else { // could happen if we are embedded inside SWT application, // in this case just spin a single empty block through --- old/src/java.desktop/macosx/native/libosxapp/NSApplicationAWT.h 2015-06-23 19:54:21.346806200 +0300 +++ new/src/java.desktop/macosx/native/libosxapp/NSApplicationAWT.h 2015-06-23 19:54:20.647217400 +0300 @@ -38,7 +38,7 @@ - (void) setDockIconWithEnv:(JNIEnv *)env; - (void) postDummyEvent; - (void) postRunnableEvent:(void (^)())block; -- (void) waitForDummyEvent; +- (void) waitForDummyEvent:(int) timeout; + (void) runAWTLoopWithApp:(NSApplication*)app; --- old/src/java.desktop/macosx/native/libosxapp/NSApplicationAWT.m 2015-06-23 19:54:25.580343800 +0300 +++ new/src/java.desktop/macosx/native/libosxapp/NSApplicationAWT.m 2015-06-23 19:54:24.872253900 +0300 @@ -398,8 +398,10 @@ [pool drain]; } -- (void)waitForDummyEvent { - [seenDummyEventLock lockWhenCondition:YES]; +- (void)waitForDummyEvent:(int) timeout { + double sec = ((double) timeout)/1000; + [seenDummyEventLock lockWhenCondition:YES + beforeDate:[NSDate dateWithTimeIntervalSinceNow:sec]]; [seenDummyEventLock unlock]; [seenDummyEventLock release];