On Jul 20, 2011, at 8:01 AM, Eric Matecki wrote: > I have to port a software to take advantage of 64 bits adressing. > The software was originally written for Windows... > So there isn't any real runloop, but there are GetMsg() function calls > spread all around the source code (in about 200 files out of the 1000+ !!).
My condolences. :) > I create a NSWindow and put a subclass of NSOpenGLView as contentView: > In that view I override all event processing methods, "decode" the event > into our own event structure, and append it to our event queue. > > In this 'append to queue' method, after appending the event, if it is the > first time it is called, > I call the working function of the software, which will call GetMsg() from > everywhere. You should probably call the working function from -applicationDidFinishLaunching: or the like. Or maybe an override of -[NSApplication run] (see below). > > GetMsg(), if our event queue is empty, tries to get new 'native' events and > decodes and append them to the queue. > > Thats where my problems really start. > > I tried all of these : > NSRunLoop* runloop = [NSRunLoop currentRunLoop]; > assert(runloop); > [runloop acceptInputForMode: NSModalPanelRunLoopMode beforeDate: [NSDate > dateWithTimeIntervalSinceNow: 1]; > // [runloop acceptInputForMode: NSDefaultRunLoopMode beforeDate: [NSDate > dateWithTimeIntervalSinceNow: 1]]; > // [runloop runMode: NSDefaultRunLoopMode beforeDate: [NSDate > dateWithTimeIntervalSinceNow: 1]]; > // [runloop runUntilDate: [NSDate dateWithTimeIntervalSinceNow: 1]]; > > The 'timeout' of 1 second is so I have time to read the traces in the console. > > What happens is: > - when I do nothing with the window, the timeout 'fires' and GetMsg() returns > nil after one second. > - when I 'draw' with the mouse (down,drag,up), the method I call on runloop > returns > (almost) instantly, thus the event has been processed somehow, but the event > methods > in my view AREN'T called !! > > Anything I'm doing wrong ? (beside the fact I really should be using the > runloop > as it was meant to, but can't ...) The connection to the window server for receiving events is a run loop source, but that source's handler merely queues the event internally. It doesn't dispatch the event. The event is dequeued by -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] and dispatched via -[NSApplication sendEvent:]. It is -[NSApplication run] which normally does this. Review the class overview for NSApplication. Also, see the GLUT sample code linked to from the documentation for -[NSApplication run]. That sample re-implements -run, which will give you some idea of how to do the same. http://developer.apple.com/library/mac/#samplecode/glut/Listings/GLUTApplication_m.html You'll need to turn that run method inside out for your GetMsg() implementation. Good luck, Ken _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com