Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2009-07-22 04:01:34 +0400
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2009-07-22 04:01:34 +0400
commit34744276d4134340afeed7ae9141d1667cb5e625 (patch)
treea093775d47d69925868c58ee30993a9672b134d6 /source/blender/freestyle/intern
parentf19ae708206260dd4d703d6099100eddd90fe9c9 (diff)
Made changes for releasing temporary objects and their data blocks
in BlenderStrokeRenderer::~BlenderStrokeRenderer().
Diffstat (limited to 'source/blender/freestyle/intern')
-rw-r--r--source/blender/freestyle/intern/stroke/BlenderStrokeRenderer.cpp28
-rw-r--r--source/blender/freestyle/intern/stroke/BlenderStrokeRenderer.h2
2 files changed, 22 insertions, 8 deletions
diff --git a/source/blender/freestyle/intern/stroke/BlenderStrokeRenderer.cpp b/source/blender/freestyle/intern/stroke/BlenderStrokeRenderer.cpp
index 411f5bf9ddf..196a974bd9c 100644
--- a/source/blender/freestyle/intern/stroke/BlenderStrokeRenderer.cpp
+++ b/source/blender/freestyle/intern/stroke/BlenderStrokeRenderer.cpp
@@ -52,7 +52,7 @@ BlenderStrokeRenderer::BlenderStrokeRenderer()
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 @@ BlenderStrokeRenderer::BlenderStrokeRenderer()
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 @@ BlenderStrokeRenderer::~BlenderStrokeRenderer(){
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 @@ void BlenderStrokeRenderer::RenderStrokeRepBasic(StrokeRep *iStrokeRep) const{
// colors allocation - me.vertexColors = True
mesh->mcol = (MCol *) CustomData_add_layer( &mesh->fdata, CD_MCOL, CD_CALLOC, NULL, mesh->totface );
-
+
////////////////////
// Data copy
////////////////////
diff --git a/source/blender/freestyle/intern/stroke/BlenderStrokeRenderer.h b/source/blender/freestyle/intern/stroke/BlenderStrokeRenderer.h
index e128cc8628a..8f4148bd047 100644
--- a/source/blender/freestyle/intern/stroke/BlenderStrokeRenderer.h
+++ b/source/blender/freestyle/intern/stroke/BlenderStrokeRenderer.h
@@ -35,8 +35,6 @@ public:
protected:
Scene* scene;
Scene* old_scene;
-
- Object* object_camera;
Material* material;
};