summaryrefslogtreecommitdiff
path: root/indra/llplugin/slplugin/slplugin.cpp
diff options
context:
space:
mode:
authorMonroe Linden <monroe@lindenlab.com>2010-06-25 14:18:22 -0700
committerMonroe Linden <monroe@lindenlab.com>2010-06-25 14:18:22 -0700
commitfd799ca57ecce0db70ddc05953f0f1e9a81d51d4 (patch)
treed3878b2f652ef20a5e18a68f441c9263d30ff086 /indra/llplugin/slplugin/slplugin.cpp
parent92c33da517fc313ee79011fb072ea116c24e0dfc (diff)
Fix for EXT-8089 (Log spam from SLPlugin about "autoreleased with no pool in place - just leaking")
Added slplugin-objc.mm. Made SLPlugin do the cocoa setup during initialization, and create/delete an autorelease pool each time through its main loop. This should make plugin code that's using autorelease correctly not leak. Fixed a bug in the version of setupCocoa() used in the viewer (it was never setting its "inited" variable).
Diffstat (limited to 'indra/llplugin/slplugin/slplugin.cpp')
-rw-r--r--indra/llplugin/slplugin/slplugin.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/indra/llplugin/slplugin/slplugin.cpp b/indra/llplugin/slplugin/slplugin.cpp
index 7d6dde1a58..4c955e875a 100644
--- a/indra/llplugin/slplugin/slplugin.cpp
+++ b/indra/llplugin/slplugin/slplugin.cpp
@@ -44,6 +44,7 @@
#if LL_DARWIN
#include <Carbon/Carbon.h>
+ #include "slplugin-objc.h"
#endif
#if LL_DARWIN || LL_LINUX
@@ -229,10 +230,19 @@ int main(int argc, char **argv)
signal(SIGSYS, &crash_handler); // non-existent system call invoked
#endif
+#if LL_DARWIN
+ setupCocoa();
+ createAutoReleasePool();
+#endif
+
LLPluginProcessChild *plugin = new LLPluginProcessChild();
plugin->init(port);
+#if LL_DARWIN
+ deleteAutoReleasePool();
+#endif
+
LLTimer timer;
timer.start();
@@ -260,6 +270,9 @@ int main(int argc, char **argv)
#endif
while(!plugin->isDone())
{
+#if LL_DARWIN
+ createAutoReleasePool();
+#endif
timer.reset();
plugin->idle();
#if LL_DARWIN
@@ -377,6 +390,10 @@ int main(int argc, char **argv)
// exception handler such as QuickTime.
//checkExceptionHandler();
#endif
+
+#if LL_DARWIN
+ deleteAutoReleasePool();
+#endif
}
delete plugin;