[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [48023] branches/soc-2012-swiss_cheese/ source/gameengine/Converter/KX_BlenderSceneConverter.cpp: Removing the ability to cancel libload threads for now.
Mitchell Stokes
mogurijin at gmail.com
Mon Jun 18 07:17:15 CEST 2012
Revision: 48023
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48023
Author: moguri
Date: 2012-06-18 05:17:06 +0000 (Mon, 18 Jun 2012)
Log Message:
-----------
Removing the ability to cancel libload threads for now. They were causing memory leaks and problems for Android.
Modified Paths:
--------------
branches/soc-2012-swiss_cheese/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
Modified: branches/soc-2012-swiss_cheese/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
===================================================================
--- branches/soc-2012-swiss_cheese/source/gameengine/Converter/KX_BlenderSceneConverter.cpp 2012-06-18 02:42:44 UTC (rev 48022)
+++ branches/soc-2012-swiss_cheese/source/gameengine/Converter/KX_BlenderSceneConverter.cpp 2012-06-18 05:17:06 UTC (rev 48023)
@@ -144,9 +144,6 @@
vector<pthread_t>::iterator pit = m_threadinfo->threads.begin();
while (pit != m_threadinfo->threads.end()) {
-#ifndef WITH_ANDROID
- pthread_cancel((*pit));
-#endif
pthread_join((*pit), NULL);
pit++;
}
@@ -947,48 +944,19 @@
m_mergequeue.push_back(pair<KX_Scene*,KX_Scene*>(merge_scene, other));
}
-typedef struct {KX_BlenderSceneConverter *converter; KX_Scene **scene; struct Main *maggie;} cleanup_args;
-void async_cleanup(void *ptr)
-{
- cleanup_args *args = (cleanup_args*)ptr;
- KX_Scene **scene = args->scene;
- if (*scene)
- {
- delete *scene;
- *scene = NULL;
- }
-
- args->converter->FreeBlendFile(args->maggie);
-
- delete args;
- printf("Cleanup called\n");
-}
-
-typedef struct {KX_BlenderSceneConverter *converter; KX_KetsjiEngine *engine; Scene *scene; struct Main *maggie; KX_Scene *merge_scene;} async_args;
+typedef struct {KX_BlenderSceneConverter *converter; KX_KetsjiEngine *engine; Scene *scene; KX_Scene *merge_scene;} async_args;
void *async_convert(void *ptr)
{
int cleanedup=0;
KX_Scene *new_scene=NULL;
async_args *args = (async_args*)ptr;
- cleanup_args *cargs = new cleanup_args();
- cargs->converter = args->converter;
- cargs->scene = &new_scene;
- cargs->maggie = args->maggie;
-
- pthread_cleanup_push(async_cleanup, cargs);
-#ifndef WITH_ANDROID
- pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
-#endif
new_scene = args->engine->CreateScene(args->scene);
- pthread_cleanup_pop(cleanedup);
-
if (new_scene)
args->converter->AddScenesToMergeQueue(args->merge_scene, new_scene);
delete args;
- delete cargs;
return NULL;
}
@@ -1123,7 +1091,6 @@
args->converter = this;
args->engine = m_ketsjiEngine;
args->scene = (Scene*)scene;
- args->maggie = main_newlib;
args->merge_scene = scene_merge;
pthread_create(&id, NULL, &async_convert, (void*)args);
m_threadinfo->threads.push_back(id);
More information about the Bf-blender-cvs
mailing list