Mercurial > fife-parpg
comparison engine/core/controller/engine.cpp @ 287:fdb1e98fd8b6
* Create an autorelease pool, so autoreleased SDL objects don't leak (Mac OS X specific issue)
* Patch by nschum
author | mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Sun, 21 Jun 2009 15:43:12 +0000 |
parents | bb9902910067 |
children | 8aae3fabcf41 |
comparison
equal
deleted
inserted
replaced
286:bbabe4942150 | 287:fdb1e98fd8b6 |
---|---|
75 #include "view/renderers/blockinginforenderer.h" | 75 #include "view/renderers/blockinginforenderer.h" |
76 #include "view/renderers/genericrenderer.h" | 76 #include "view/renderers/genericrenderer.h" |
77 #include "engine.h" | 77 #include "engine.h" |
78 | 78 |
79 #ifdef USE_COCOA | 79 #ifdef USE_COCOA |
80 | |
81 #include <objc/message.h> | |
80 #include <dlfcn.h> | 82 #include <dlfcn.h> |
81 | 83 |
82 int main(int argc, char **argv) | 84 int main(int argc, char **argv) |
83 { | 85 { |
84 return 0; | 86 return 0; |
110 void* cocoa_lib; | 112 void* cocoa_lib; |
111 cocoa_lib = dlopen( "/System/Library/Frameworks/Cocoa.framework/Cocoa", RTLD_LAZY ); | 113 cocoa_lib = dlopen( "/System/Library/Frameworks/Cocoa.framework/Cocoa", RTLD_LAZY ); |
112 void (*nsappload)(void); | 114 void (*nsappload)(void); |
113 nsappload = (void(*)()) dlsym( cocoa_lib, "NSApplicationLoad"); | 115 nsappload = (void(*)()) dlsym( cocoa_lib, "NSApplicationLoad"); |
114 nsappload(); | 116 nsappload(); |
117 | |
118 // Create an autorelease pool, so autoreleased SDL objects don't leak. | |
119 objc_object *NSAutoreleasePool = objc_getClass("NSAutoreleasePool"); | |
120 m_autoreleasePool = | |
121 objc_msgSend(NSAutoreleasePool, sel_registerName("new")); | |
115 #endif | 122 #endif |
116 preInit(); | 123 preInit(); |
117 } | 124 } |
118 | 125 |
119 EngineSettings& Engine::getSettings() { | 126 EngineSettings& Engine::getSettings() { |
279 | 286 |
280 delete m_timemanager; | 287 delete m_timemanager; |
281 | 288 |
282 TTF_Quit(); | 289 TTF_Quit(); |
283 SDL_Quit(); | 290 SDL_Quit(); |
291 #ifdef USE_COCOA | |
292 objc_msgSend(m_autoreleasePool, sel_registerName("release")); | |
293 #endif | |
284 FL_LOG(_log, "================== Engine destructed =================="); | 294 FL_LOG(_log, "================== Engine destructed =================="); |
285 m_destroyed = true; | 295 m_destroyed = true; |
286 //delete m_logmanager; | 296 //delete m_logmanager; |
287 } | 297 } |
288 void Engine::initializePumping() { | 298 void Engine::initializePumping() { |