[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