Revision: 21784
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21784
Author:   kjym3
Date:     2009-07-22 02:01:34 +0200 (Wed, 22 Jul 2009)

Log Message:
-----------
Made changes for releasing temporary objects and their data blocks
in BlenderStrokeRenderer::~BlenderStrokeRenderer().

Modified Paths:
--------------
    
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/stroke/BlenderStrokeRenderer.cpp
    
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/stroke/BlenderStrokeRenderer.h

Modified: 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/stroke/BlenderStrokeRenderer.cpp
===================================================================
--- 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/stroke/BlenderStrokeRenderer.cpp
        2009-07-21 22:02:10 UTC (rev 21783)
+++ 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/stroke/BlenderStrokeRenderer.cpp
        2009-07-22 00:01:34 UTC (rev 21784)
@@ -52,7 +52,7 @@
        old_scene = G.scene;
        
        ListBase lb;
-       scene = add_scene("freestyle_strokes_scene  ");
+       scene = add_scene("freestyle_strokes");
        lb = scene->r.layers;
        scene->r= old_scene->r;
        scene->r.layers= lb;
@@ -63,7 +63,7 @@
        float height = scene->r.ysch;
 
        // Camera
-       object_camera = add_object(OB_CAMERA);
+       Object* object_camera = add_object(OB_CAMERA);
        
        Camera* camera = (Camera *) object_camera->data;
        camera->type = CAM_ORTHO;
@@ -88,9 +88,25 @@
            delete _textureManager;
            _textureManager = 0;
          }
-       
-       free_object( object_camera );
-       free_material( material );
+
+       Base *base = (Base *)scene->base.first;
+       while(base) {
+               switch (base->object->type) {
+               case OB_MESH:
+                       free_libblock( &G.main->mesh, base->object->data );
+                       free_libblock( &G.main->object, base->object );
+                       break;
+               case OB_CAMERA:
+                       free_libblock( &G.main->camera, base->object->data );
+                       free_libblock( &G.main->object, base->object );
+                       break;
+               default:
+                       char *name = base->object->id.name;
+                       cerr << "Warning: unexpected object in the scene: " << 
name[0] << name[1] << ":" << (name+2) << endl;
+               }
+               base = base->next;
+       }
+       free_libblock( &G.main->mat, material );
        free_libblock( &G.main->scene, scene );
        
        set_scene_bg( old_scene );
@@ -141,7 +157,7 @@
                
                // colors allocation  - me.vertexColors = True
                mesh->mcol = (MCol *) CustomData_add_layer( &mesh->fdata, 
CD_MCOL, CD_CALLOC, NULL, mesh->totface );
-               
+
                ////////////////////
                //  Data copy
                ////////////////////

Modified: 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/stroke/BlenderStrokeRenderer.h
===================================================================
--- 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/stroke/BlenderStrokeRenderer.h
  2009-07-21 22:02:10 UTC (rev 21783)
+++ 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/stroke/BlenderStrokeRenderer.h
  2009-07-22 00:01:34 UTC (rev 21784)
@@ -35,8 +35,6 @@
 protected:
        Scene* scene;
        Scene* old_scene;
-       
-       Object* object_camera;
        Material* material;
 
 };


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

Reply via email to