[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