diff options
author | Bastien Montagne <bastien@blender.org> | 2022-08-12 17:21:11 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2022-08-12 17:23:12 +0300 |
commit | fd57f520acb119036edc61bf991e0b34c7026fe5 (patch) | |
tree | 65728be2d5979f4a22a6dc44c5cd5e888227607f /doc | |
parent | 62eb21e3ce87451a86b8ad78b6980cd8c9013f89 (diff) |
Py API doc: Add warning that py-defined property accessor callbacks may be called in threaded context.
At least Depsgraph evaluation and liboverride diffing do process IDs in
parallel, so python code in py-defined properties should not access any
data outside of their owner ID.
Ref. T100203.
Diffstat (limited to 'doc')
-rw-r--r-- | doc/python_api/examples/bpy.props.4.py | 4 | ||||
-rw-r--r-- | doc/python_api/examples/bpy.props.5.py | 4 | ||||
-rw-r--r-- | doc/python_api/examples/bpy.props.py | 9 |
3 files changed, 17 insertions, 0 deletions
diff --git a/doc/python_api/examples/bpy.props.4.py b/doc/python_api/examples/bpy.props.4.py index daab18c8986..93e4a9fda62 100644 --- a/doc/python_api/examples/bpy.props.4.py +++ b/doc/python_api/examples/bpy.props.4.py @@ -6,6 +6,10 @@ It can be useful to perform an action when a property is changed and can be used to update other properties or synchronize with external data. All properties define update functions except for CollectionProperty. + +.. warning:: + Remember that these callbacks may be executed in threaded context. + """ import bpy diff --git a/doc/python_api/examples/bpy.props.5.py b/doc/python_api/examples/bpy.props.5.py index c428b4743f8..49853168661 100644 --- a/doc/python_api/examples/bpy.props.5.py +++ b/doc/python_api/examples/bpy.props.5.py @@ -6,6 +6,10 @@ Getter/setter functions can be used for boolean, int, float, string and enum pro If these callbacks are defined the property will not be stored in the ID properties automatically. Instead, the `get` and `set` functions will be called when the property is respectively read or written from the API. + +.. warning:: + Remember that these callbacks may be executed in threaded context. + """ import bpy diff --git a/doc/python_api/examples/bpy.props.py b/doc/python_api/examples/bpy.props.py index d19b57b13a5..a2a51addc65 100644 --- a/doc/python_api/examples/bpy.props.py +++ b/doc/python_api/examples/bpy.props.py @@ -7,6 +7,15 @@ Custom properties can be added to any subclass of an :class:`ID`, These properties can be animated, accessed by the user interface and python like Blender's existing properties. + +.. warning:: + + Access to these properties might happen in threaded context, on a per-data-block level. + This has to be carefully considered when using accessors or update callbacks. + + Typically, these callbacks should not affect any other data that the one owned by their data-block. + When accessing external non-Blender data, thread safety mechanisms should be considered. + """ import bpy |