[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21784] branches/soc-2008-mxcurioni/source /blender/freestyle/intern/stroke: Made changes for releasing temporary objects and their data blocks

Tamito Kajiyama rd6t-kjym at asahi-net.or.jp
Wed Jul 22 02:01:35 CEST 2009


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;
 
 };





More information about the Bf-blender-cvs mailing list