Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Oeser <info@graphics-engineer.com>2022-10-06 13:10:26 +0300
committerPhilipp Oeser <info@graphics-engineer.com>2022-10-06 15:18:02 +0300
commit423c1366b05e1024f771ca0b5e2cfde65cbb9edc (patch)
tree2adffce6fbfd819bcea26bf6ba9fbb9b8bd155c1
parenta01ab2b4e093a35b56888cf646d84686bccb0fbd (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.c15
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");
}