[Bf-blender-cvs] [eeb5b54] openvdb: Quick fix for data corruption happening when changing scene frame in separate threads.

Kévin Dietrich noreply at git.blender.org
Fri Jun 5 14:08:49 CEST 2015


Commit: eeb5b5411f96b487f26f5773198134cd0e41516a
Author: Kévin Dietrich
Date:   Wed Jun 3 19:53:14 2015 +0200
Branches: openvdb
https://developer.blender.org/rBeeb5b5411f96b487f26f5773198134cd0e41516a

Quick fix for data corruption happening when changing scene frame in
separate threads.

Patch by @lukastoenne.

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

M	source/blender/editors/object/object_modifier.c

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

diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c
index 07194fe..8486de6 100644
--- a/source/blender/editors/object/object_modifier.c
+++ b/source/blender/editors/object/object_modifier.c
@@ -74,6 +74,7 @@
 #include "BKE_paint.h"
 #include "BKE_particle.h"
 #include "BKE_pointcache.h"
+#include "BKE_screen.h"
 #include "BKE_smoke.h"
 #include "BKE_softbody.h"
 #include "BKE_editmesh.h"
@@ -2350,6 +2351,12 @@ static void smoke_export_startjob(void *customdata, short *stop, short *do_updat
 
 	G.is_break = false;
 
+	/* XXX annoying hack: needed to prevent data corruption when changing
+	 * scene frame in separate threads
+	 */
+	G.is_rendering = true;
+	BKE_spacedata_draw_locks(true);
+
 	smokeModifier_OpenVDB_export(sej->smd, sej->scene, sej->ob, sej->dm,
 	                             smoke_export_update, (void *)sej);
 
@@ -2362,6 +2369,9 @@ static void smoke_export_endjob(void *customdata)
 	SmokeExportJob *sej = customdata;
 	Object *ob = sej->ob;
 
+	G.is_rendering = false;
+	BKE_spacedata_draw_locks(false);
+
 	DAG_id_tag_update(&ob->id, OB_RECALC_DATA);
 	WM_main_add_notifier(NC_OBJECT | ND_MODIFIER, ob);
 }




More information about the Bf-blender-cvs mailing list