+2014-11-15 Jan Djärv <jan.h.d@swipnet.se>
+
+ * nsterm.m (ns_send_appdefined): Check for application defined
+ event on Cocoa (Bug#18993).
+ (run): Restore code before the previous 18993 fix.
+
2014-11-14 David Reitter <david.reitter@gmail.com>
* nsterm.m (run): set timeout for event loop to prevent hang.
/* Only post this event if we haven't already posted one. This will end
the [NXApp run] main loop after having processed all events queued at
this moment. */
+
+#ifdef NS_IMPL_COCOA
+ if (! send_appdefined)
+ {
+ /* OSX 10.10.1 swallows the AppDefined event we are sending ourselves
+ in certain situations (rapid incoming events).
+ So check if we have one, if not add one. */
+ NSEvent *appev = [NSApp nextEventMatchingMask:NSApplicationDefinedMask
+ untilDate:[NSDate distantPast]
+ inMode:NSDefaultRunLoopMode
+ dequeue:NO];
+ if (! appev) send_appdefined = YES;
+ }
+#endif
+
if (send_appdefined)
{
NSEvent *nxev;
#ifdef NS_IMPL_COCOA
- (void)run
{
+#ifndef NSAppKitVersionNumber10_9
+#define NSAppKitVersionNumber10_9 1265
+#endif
+
+ if ((int)NSAppKitVersionNumber != NSAppKitVersionNumber10_9)
+ {
+ [super run];
+ return;
+ }
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[pool release];
pool = [[NSAutoreleasePool alloc] init];
- /* OSX 10.10.1 swallows the AppDefined event we are sending ourselves
- in certain situations (rapid incoming events).
- The timeout we set with untilDate is necessary to prevent a hang.
- Bug #18993 */
-
NSEvent *event =
[self nextEventMatchingMask:NSAnyEventMask
- untilDate:[NSDate dateWithTimeIntervalSinceNow:0.5]
+ untilDate:[NSDate distantFuture]
inMode:NSDefaultRunLoopMode
dequeue:YES];
- if (event == nil) // timeout
- shouldKeepRunning = NO;
- else
- [self sendEvent:event];
-
+ [self sendEvent:event];
[self updateWindows];
} while (shouldKeepRunning);