diff 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
line wrap: on
line diff
--- a/engine/core/controller/engine.cpp	Sun Jun 21 15:09:54 2009 +0000
+++ b/engine/core/controller/engine.cpp	Sun Jun 21 15:43:12 2009 +0000
@@ -77,6 +77,8 @@
 #include "engine.h"
 
 #ifdef USE_COCOA
+
+#include <objc/message.h>
 #include <dlfcn.h>
 
 int main(int argc, char **argv)
@@ -112,6 +114,11 @@
 		void (*nsappload)(void);
 		nsappload = (void(*)()) dlsym( cocoa_lib, "NSApplicationLoad");
 		nsappload();
+
+		// Create an autorelease pool, so autoreleased SDL objects don't leak.
+		objc_object *NSAutoreleasePool = objc_getClass("NSAutoreleasePool");
+		m_autoreleasePool =
+			objc_msgSend(NSAutoreleasePool, sel_registerName("new"));
 #endif
 		preInit();
 	}
@@ -281,6 +288,9 @@
 
 		TTF_Quit();
 		SDL_Quit();
+#ifdef USE_COCOA
+		objc_msgSend(m_autoreleasePool, sel_registerName("release"));
+#endif
 		FL_LOG(_log, "================== Engine destructed ==================");
 		m_destroyed = true;
 		//delete m_logmanager;