[Bf-blender-cvs] [2218135] master: Fix T41969: Enviropment map crash

Sergey Sharybin noreply at git.blender.org
Tue Nov 18 16:07:31 CET 2014


Commit: 2218135f67bba61b88ed5657125f73ba69f46bd5
Author: Sergey Sharybin
Date:   Tue Nov 18 16:05:47 2014 +0100
Branches: master
https://developer.blender.org/rB2218135f67bba61b88ed5657125f73ba69f46bd5

Fix T41969: Enviropment map crash

The issue was caused by the threading conflict between main thread which
might free environment map and render thread which might be using that
environment map.

Solved by stopping preview jobs when changing environment map.

Sure there are still ways to run into threading conflict, but would rather
solve this things case-by-case.

===================================================================

M	source/blender/makesrna/intern/rna_texture.c

===================================================================

diff --git a/source/blender/makesrna/intern/rna_texture.c b/source/blender/makesrna/intern/rna_texture.c
index f098a65..188a30d 100644
--- a/source/blender/makesrna/intern/rna_texture.c
+++ b/source/blender/makesrna/intern/rna_texture.c
@@ -119,6 +119,7 @@ static EnumPropertyItem blend_type_items[] = {
 #include "BKE_main.h"
 
 #include "ED_node.h"
+#include "ED_render.h"
 
 static StructRNA *rna_Texture_refine(struct PointerRNA *ptr)
 {
@@ -443,8 +444,10 @@ static void rna_Envmap_source_update(Main *bmain, Scene *scene, PointerRNA *ptr)
 {
 	Tex *tex = ptr->id.data;
 	
-	if (tex->env)
+	if (tex->env) {
+		ED_preview_kill_jobs(bmain->wm.first, bmain);
 		BKE_free_envmapdata(tex->env);
+	}
 	
 	rna_Texture_update(bmain, scene, ptr);
 }




More information about the Bf-blender-cvs mailing list