diff options
author | Philipp Oeser <info@graphics-engineer.com> | 2022-10-06 13:10:26 +0300 |
---|---|---|
committer | Philipp Oeser <info@graphics-engineer.com> | 2022-10-06 15:18:02 +0300 |
commit | 423c1366b05e1024f771ca0b5e2cfde65cbb9edc (patch) | |
tree | 2adffce6fbfd819bcea26bf6ba9fbb9b8bd155c1 | |
parent | a01ab2b4e093a35b56888cf646d84686bccb0fbd (diff) |
Fix T101618: Freeze when reloading a library in certain situation
Freeze happened when reloading a library while having an Object property
with a custom getter function defined in Python.
Just piggybacking on rB62eb21e3ce87, this just applies the same fix (use
the BPy_BEGIN/END_ALLOW_THREADS macros) to relading from RNA/py.
All credit goes to @brecht and @mont29.
Maniphest Tasks: T101618
Differential Revision: https://developer.blender.org/D16167
-rw-r--r-- | source/blender/makesrna/intern/rna_ID.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/source/blender/makesrna/intern/rna_ID.c b/source/blender/makesrna/intern/rna_ID.c index c91e0e1805e..b2c57846a08 100644 --- a/source/blender/makesrna/intern/rna_ID.c +++ b/source/blender/makesrna/intern/rna_ID.c @@ -1392,6 +1392,19 @@ static void rna_Library_version_get(PointerRNA *ptr, int *value) value[2] = lib->subversionfile; } +static void rna_Library_reload(Library *lib, bContext *C, ReportList *reports) +{ +# ifdef WITH_PYTHON + BPy_BEGIN_ALLOW_THREADS; +# endif + + WM_lib_reload(lib, C, reports); + +# ifdef WITH_PYTHON + BPy_END_ALLOW_THREADS; +# endif +} + #else static void rna_def_ID_properties(BlenderRNA *brna) @@ -2239,7 +2252,7 @@ static void rna_def_library(BlenderRNA *brna) RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_flag(prop, PROP_THICK_WRAP); - func = RNA_def_function(srna, "reload", "WM_lib_reload"); + func = RNA_def_function(srna, "reload", "rna_Library_reload"); RNA_def_function_flag(func, FUNC_USE_REPORTS | FUNC_USE_CONTEXT); RNA_def_function_ui_description(func, "Reload this library and all its linked data-blocks"); } |