[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