From 08e86ea9b3e4d0b24f592ab9d2f5650de40f6bed Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Thu, 15 May 2014 23:04:30 -0400 Subject: Removed the dummy NSEvent code from bleh_darwin.m and rewrote it in Objective-C in delegateuitask_darwin.m. And now to nuke bleh_darwin.m and change all the int64_ts to intptr_ts and merge the .h files... --- delegateuitask_darwin.m | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'delegateuitask_darwin.m') diff --git a/delegateuitask_darwin.m b/delegateuitask_darwin.m index 5d2ec9e..91eb83b 100644 --- a/delegateuitask_darwin.m +++ b/delegateuitask_darwin.m @@ -9,6 +9,7 @@ #include #include #include +#include @interface appDelegate : NSObject @end @@ -80,13 +81,23 @@ void douitask(id appDelegate, void *p) void breakMainLoop(void) { + NSEvent *e; + // -[NSApplication stop:] stops the event loop; it won't do a clean termination, but we're not too concerned with that (at least not on the other platforms either so) // we can't call -[NSApplication terminate:] because that will just quit the program, ensuring we never leave ui.Go() [NSApp stop:NSApp]; // simply calling -[NSApplication stop:] is not good enough, as the stop flag is only checked when an event comes in // we have to create a "proper" event; a blank event will just throw an exception - [NSApp postEvent:makeDummyEvent() // TODO inline this - atStart:NO]; // not at start, just in case there are other events pending (TODO is this correct?) + e = [NSEvent otherEventWithType:NSApplicationDefined + location:NSZeroPoint + modifierFlags:0 + timestamp:0 + windowNumber:0 + context:nil + subtype:0 + data1:0 + data2:0]; + [NSApp postEvent:e atStart:NO]; // not at start, just in case there are other events pending (TODO is this correct?) } void cocoaMainLoop(void) -- cgit v1.2.3