[Bf-blender-cvs] [fd57f520acb] blender-v3.3-release: Py API doc: Add warning that py-defined property accessor callbacks may be called in threaded context.

Bastien Montagne noreply at git.blender.org
Fri Aug 12 16:23:17 CEST 2022


Commit: fd57f520acb119036edc61bf991e0b34c7026fe5
Author: Bastien Montagne
Date:   Fri Aug 12 16:21:11 2022 +0200
Branches: blender-v3.3-release
https://developer.blender.org/rBfd57f520acb119036edc61bf991e0b34c7026fe5

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.

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

M	doc/python_api/examples/bpy.props.4.py
M	doc/python_api/examples/bpy.props.5.py
M	doc/python_api/examples/bpy.props.py

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

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



More information about the Bf-blender-cvs mailing list