fix [#28807] Drivers breaking by undo
authorCampbell Barton <ideasman42@gmail.com>
Wed, 5 Oct 2011 07:28:59 +0000 (07:28 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Wed, 5 Oct 2011 07:28:59 +0000 (07:28 +0000)
source/blender/python/intern/bpy_driver.c
source/blender/python/intern/bpy_rna.c

index f3ef55d..3197903 100644 (file)
@@ -41,6 +41,9 @@
 
 #include "bpy_driver.h"
 
+extern void BPY_update_rna_module(void);
+
+
 /* for pydrivers (drivers using one-line Python expressions to express relationships between targets) */
 PyObject *bpy_pydriver_Dict= NULL;
 
@@ -164,6 +167,10 @@ float BPY_driver_exec(ChannelDriver *driver)
        if(use_gil)
                gilstate= PyGILState_Ensure();
 
+       /* needed since drivers are updated directly after undo where 'main' is
+        * re-allocated [#28807] */
+       BPY_update_rna_module();
+
        /* init global dictionary for py-driver evaluation settings */
        if (!bpy_pydriver_Dict) {
                if (bpy_pydriver_create_dict() != 0) {
index d5a950f..f79f1d0 100644 (file)
@@ -5906,7 +5906,11 @@ PyObject *BPY_rna_module(void)
 
 void BPY_update_rna_module(void)
 {
+#if 0
        RNA_main_pointer_create(G.main, rna_module_ptr);
+#else
+       rna_module_ptr->data= G.main; /* just set data is enough */
+#endif
 }
 
 #if 0