Redo the fix, the old takes too much CPU.
Fixes: 18993 * nsterm.m (ns_send_appdefined): Check for application defined event on Cocoa (Bug#18993). (run): Restore code before the previous 18993 fix.
This commit is contained in:
parent
788bc73c80
commit
0d9bf9725a
2 changed files with 32 additions and 11 deletions
|
@ -1,3 +1,9 @@
|
|||
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.
|
||||
|
|
37
src/nsterm.m
37
src/nsterm.m
|
@ -3377,6 +3377,21 @@ overwriting cursor (usually when cursor on a tab) */
|
|||
/* 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;
|
||||
|
@ -4511,6 +4526,15 @@ - (id)init
|
|||
#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];
|
||||
|
||||
|
@ -4523,22 +4547,13 @@ - (void)run
|
|||
[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);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue