Can this be rephrased in terms of "I would like to find or write a function that I can call periodically from my own processing loop, that handles all the Cocoa activities and dispatching of events, such that I do not have to use the Cocoa provided runloop ?"
On Thu, Nov 5, 2009 at 3:56 PM, Kevin Brandon <kjbron...@gmail.com> wrote: > Hi, > > I have been working on a somewhat game engine (not really, but acts > like one) and currently involved in porting this to different > platforms. The engine works perfectly fine on Linux, FreeBSD and > Windows so far. > > It is comprised of following parts: > 1. Entry point (e.g. main or WinMain) > 2. It then explicitly loads platform run-time library, depending on > the platform (in our case, it could be libCocoaAPI.dylib) > 3. Then it creates windows and it should handle messages (input > messages, such as mouse and keyboard, and it should post frame events > when it's idle). All localization and/or platform-specific resource > handling is done within this shared library. > 4. It may then quit. > > This library is shared among different projects (which may serve for > different purposes). > > Loading a library, creating windows and handling messages are fine on > Win32, Linux and FreeBSD (and on Carbon, IIRC), but we couldn't find > out a proper way to do it under Cocoa. > > We need something very similar to that of SDL: > while (true) > { > if (PollEvents()) > { > switch (GetEvent()) > { > case MouseEvent: HandleMouseEvent(); break; > case WindowResizeEvent: HandleWindowResize(); break; > default: break; > } > } > else > HandleFrameEvent(); > } > > This function, however, must be implemented within a Cocoa dynamic library. > > Is there a sample code doing this already? We already have different > Xcode projects for UI and this windowing framework. But we do not know > what to add into Xcode shared library (windowing framework) to work > with the application. Application's entry point is in C++, no > different than following: > > typedef int (*Platform_Run)(int, char**); > int main(int argc, char* argv[]) > { > void* pPlatformRuntime = dlopen("libMacRuntime.dylib", RTLD_NOW); > Platform_Runtime = (int(*)(int, char**))dlsym(pPlatformRuntime, > "Platform_Run"); > int nRet = Platform_Run(argc, argv); > dlclose(pPlatformRuntime); > return nRet; > } > > My questions are: > 1. whether it's possible to implement entire message loop within a > shared object? > 2. whether it's possible to access those messages from another shared object? > 2. if so, what kind of Xcode project setup should we prepare (i.e. > should we add an Application XIB, or Empty XIB, or Window XIB) > > I'd be very happy, if you could give us an idea. > > Regards. > Jason > _______________________________________________ > > 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/rbarris%40gmail.com > > This email sent to rbar...@gmail.com > _______________________________________________ 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