Revision: 49229
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49229
Author:   moguri
Date:     2012-07-25 21:06:13 +0000 (Wed, 25 Jul 2012)
Log Message:
-----------
Cleaning up a memory leak with KX_LibLoadStatus objects that were being sent to 
Python. The objects are now saved to a map on the scene converter and deleted 
when the library is freed. This map can later be used to provide users with a 
list of status objects.

Modified Paths:
--------------
    
branches/soc-2012-swiss_cheese/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
    
branches/soc-2012-swiss_cheese/source/gameengine/Converter/KX_BlenderSceneConverter.h
    branches/soc-2012-swiss_cheese/source/gameengine/Ketsji/KX_PythonInit.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-07-25 20:51:04 UTC (rev 49228)
+++ 
branches/soc-2012-swiss_cheese/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
     2012-07-25 21:06:13 UTC (rev 49229)
@@ -1175,6 +1175,7 @@
        if (!(options & LIB_LOAD_ASYNC))
                status->Finish();
        
+       m_status_map[main_newlib->name] = status;
        return status;
 }
 
@@ -1459,6 +1460,9 @@
        /* make sure this maggie is removed from the import list if it's there 
(this operation is safe if it isn't in the list) */
        removeImportMain(maggie);
 
+       delete m_status_map[maggie->name];
+       m_status_map.erase(maggie->name);
+
        free_main(maggie);
 
        return true;

Modified: 
branches/soc-2012-swiss_cheese/source/gameengine/Converter/KX_BlenderSceneConverter.h
===================================================================
--- 
branches/soc-2012-swiss_cheese/source/gameengine/Converter/KX_BlenderSceneConverter.h
       2012-07-25 20:51:04 UTC (rev 49228)
+++ 
branches/soc-2012-swiss_cheese/source/gameengine/Converter/KX_BlenderSceneConverter.h
       2012-07-25 21:06:13 UTC (rev 49229)
@@ -69,6 +69,9 @@
        map<struct Material*, BL_Material*> m_mat_cache;
        map<struct Material*, RAS_IPolyMaterial*> m_polymat_cache;
 
+       // Saved KX_LibLoadStatus objects
+       map<char *, class KX_LibLoadStatus*> m_status_map;
+
        // Should also have a list of collision shapes. 
        // For the time being this is held in KX_Scene::m_shapes
 

Modified: 
branches/soc-2012-swiss_cheese/source/gameengine/Ketsji/KX_PythonInit.cpp
===================================================================
--- branches/soc-2012-swiss_cheese/source/gameengine/Ketsji/KX_PythonInit.cpp   
2012-07-25 20:51:04 UTC (rev 49228)
+++ branches/soc-2012-swiss_cheese/source/gameengine/Ketsji/KX_PythonInit.cpp   
2012-07-25 21:06:13 UTC (rev 49229)
@@ -705,7 +705,7 @@
                BLI_path_abs(abs_path, gp_GamePythonPath);
 
                if 
((status=kx_scene->GetSceneConverter()->LinkBlendFilePath(abs_path, group, 
kx_scene, &err_str, options))) {
-                       return status->NewProxy(false);
+                       return status->GetProxy();
                }
        }
        else
@@ -713,7 +713,7 @@
 
                if 
((status=kx_scene->GetSceneConverter()->LinkBlendFileMemory(py_buffer.buf, 
py_buffer.len, path, group, kx_scene, &err_str, options)))        {
                        PyBuffer_Release(&py_buffer);
-                       return status->NewProxy(false);
+                       return status->GetProxy();
                }
 
                PyBuffer_Release(&py_buffer);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to