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
This commit is contained in:
Philipp Oeser 2022-10-06 12:10:26 +02:00
parent a01ab2b4e0
commit 423c1366b0
Notes: blender-bot 2023-02-14 08:45:09 +01:00
Referenced by issue #100749, Blender LTS: Maintenance Task 3.3
Referenced by issue #101618, Freeze when reloading a library while having an Object property with a custom getter function defined in Python
1 changed files with 14 additions and 1 deletions

View File

@ -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");
}