[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [37298] trunk/blender/source/blender/ python/intern: disable the readonly state while rna property callbacks run.

Campbell Barton ideasman42 at gmail.com
Tue Jun 7 18:08:49 CEST 2011


Revision: 37298
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37298
Author:   campbellbarton
Date:     2011-06-07 16:08:49 +0000 (Tue, 07 Jun 2011)
Log Message:
-----------
disable the readonly state while rna property callbacks run.

Modified Paths:
--------------
    trunk/blender/source/blender/python/intern/bpy_props.c
    trunk/blender/source/blender/python/intern/bpy_rna.c
    trunk/blender/source/blender/python/intern/bpy_rna.h

Modified: trunk/blender/source/blender/python/intern/bpy_props.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_props.c	2011-06-07 15:45:54 UTC (rev 37297)
+++ trunk/blender/source/blender/python/intern/bpy_props.c	2011-06-07 16:08:49 UTC (rev 37298)
@@ -185,9 +185,14 @@
 	PyObject *args;
 	PyObject *self;
 	PyObject *ret;
+	const int is_write_ok= pyrna_write_check();
 
 	BLI_assert(py_data != NULL);
 
+	if(!is_write_ok) {
+		pyrna_write_set(TRUE);
+	}
+
 	bpy_context_set(C, &gilstate);
 
 	py_func= py_data[BPY_DATA_CB_SLOT_UPDATE];
@@ -216,6 +221,10 @@
 	}
 
 	bpy_context_clear(C, &gilstate);
+
+	if(!is_write_ok) {
+		pyrna_write_set(FALSE);
+	}
 }
 
 static int bpy_prop_callback_check(PyObject *py_func, int argcount)

Modified: trunk/blender/source/blender/python/intern/bpy_rna.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_rna.c	2011-06-07 15:45:54 UTC (rev 37297)
+++ trunk/blender/source/blender/python/intern/bpy_rna.c	2011-06-07 16:08:49 UTC (rev 37298)
@@ -323,11 +323,20 @@
 {
 	return !rna_disallow_writes;
 }
+
+void pyrna_write_set(int val)
+{
+	rna_disallow_writes= !val;
+}
 #else // USE_PEDANTIC_WRITE
 int pyrna_write_check(void)
 {
 	return TRUE;
 }
+void pyrna_write_set(int UNUSED(val))
+{
+	/* nothing */
+}
 #endif // USE_PEDANTIC_WRITE
 
 static Py_ssize_t pyrna_prop_collection_length(BPy_PropertyRNA *self);

Modified: trunk/blender/source/blender/python/intern/bpy_rna.h
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_rna.h	2011-06-07 15:45:54 UTC (rev 37297)
+++ trunk/blender/source/blender/python/intern/bpy_rna.h	2011-06-07 16:08:49 UTC (rev 37298)
@@ -183,6 +183,7 @@
 int pyrna_array_contains_py(PointerRNA *ptr, PropertyRNA *prop, PyObject *value);
 
 int pyrna_write_check(void);
+void pyrna_write_set(int val);
 
 int pyrna_struct_validity_check(BPy_StructRNA *pysrna);
 int pyrna_prop_validity_check(BPy_PropertyRNA *self);




More information about the Bf-blender-cvs mailing list