[Bf-blender-cvs] [9c756162ae] master: Fix T50385: Deadlock in BKE_libblock_remap_locked.

Bastien Montagne noreply at git.blender.org
Mon Jan 9 10:44:46 CET 2017


Commit: 9c756162aed5354ff3d4fd7ba6c84253b39d14fa
Author: Bastien Montagne
Date:   Mon Jan 9 10:43:23 2017 +0100
Branches: master
https://developer.blender.org/rB9c756162aed5354ff3d4fd7ba6c84253b39d14fa

Fix T50385: Deadlock in BKE_libblock_remap_locked.

Am pretty sure node update should not touch to Main database like that,
but for now let's allow it, I guess the hack is needed for things like
Sverchok. ;)

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

M	source/blender/blenkernel/intern/library_remap.c

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

diff --git a/source/blender/blenkernel/intern/library_remap.c b/source/blender/blenkernel/intern/library_remap.c
index f76fc628ed..d7d566a9ec 100644
--- a/source/blender/blenkernel/intern/library_remap.c
+++ b/source/blender/blenkernel/intern/library_remap.c
@@ -562,8 +562,14 @@ void BKE_libblock_remap_locked(
 		default:
 			break;
 	}
+
 	/* Node trees may virtually use any kind of data-block... */
+	/* XXX Yuck!!!! nodetree update can do pretty much any thing when talking about py nodes,
+	 *     including creating new data-blocks (see T50385), so we need to unlock main here. :(
+	 *     Why can't we have re-entrent locks? */
+	BKE_main_unlock(bmain);
 	libblock_remap_data_postprocess_nodetree_update(bmain, new_id);
+	BKE_main_lock(bmain);
 
 	/* Full rebuild of DAG! */
 	DAG_relations_tag_update(bmain);




More information about the Bf-blender-cvs mailing list