[Bf-blender-cvs] [1064b74] master: Fix for an occasional crash in Freestyle stroke rendering.
Tamito Kajiyama
noreply at git.blender.org
Fri May 9 05:22:34 CEST 2014
Commit: 1064b74196dc50bc4924e9196fdf5a872f74f6cc
Author: Tamito Kajiyama
Date: Fri May 9 11:38:36 2014 +0900
https://developer.blender.org/rB1064b74196dc50bc4924e9196fdf5a872f74f6cc
Fix for an occasional crash in Freestyle stroke rendering.
Materials were freed before releasing meshes that may have references to the materials.
===================================================================
M source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp
===================================================================
diff --git a/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp b/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp
index 9a356f4..d0dfd47 100644
--- a/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp
+++ b/source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp
@@ -137,25 +137,6 @@ BlenderStrokeRenderer::BlenderStrokeRenderer(Render *re, int render_count) : Str
BlenderStrokeRenderer::~BlenderStrokeRenderer()
{
- // release materials
- Link *lnk = (Link *)freestyle_bmain->mat.first;
-
- while (lnk)
- {
- Material *ma = (Material*)lnk;
- // We want to retain the linestyle mtexs, so let's detach them first
- for (int a = 0; a < MAX_MTEX; a++) {
- if (ma->mtex[a]) {
- ma->mtex[a] = NULL;
- }
- else {
- break; // Textures are ordered, no empty slots between two textures
- }
- }
- lnk = lnk->next;
- BKE_libblock_free(freestyle_bmain, ma);
- }
-
// The freestyle_scene object is not released here. Instead,
// the scene is released in free_all_freestyle_renders() in
// source/blender/render/intern/source/pipeline.c, after the
@@ -186,6 +167,25 @@ BlenderStrokeRenderer::~BlenderStrokeRenderer()
}
}
BLI_freelistN(&freestyle_scene->base);
+
+ // release materials
+ Link *lnk = (Link *)freestyle_bmain->mat.first;
+
+ while (lnk)
+ {
+ Material *ma = (Material*)lnk;
+ // We want to retain the linestyle mtexs, so let's detach them first
+ for (int a = 0; a < MAX_MTEX; a++) {
+ if (ma->mtex[a]) {
+ ma->mtex[a] = NULL;
+ }
+ else {
+ break; // Textures are ordered, no empty slots between two textures
+ }
+ }
+ lnk = lnk->next;
+ BKE_libblock_free(freestyle_bmain, ma);
+ }
}
float BlenderStrokeRenderer::get_stroke_vertex_z(void) const
More information about the Bf-blender-cvs
mailing list