fix [#28005] Python Add-Ons are constantly reloaded if twice in the path
Addons are checked for their timestamps and reloaded when it changes but this failed when, 2 addons had the same name since different times caused 2 reloads on every redraw. Now when duplicate addons are in the path now give a error message in the UI and print path conflict in the console and don't thrash reloading.
This commit is contained in:
@@ -31,6 +31,8 @@ __all__ = (
|
||||
import bpy as _bpy
|
||||
|
||||
|
||||
error_duplicates = False
|
||||
|
||||
def paths():
|
||||
# RELEASE SCRIPTS: official scripts distributed in Blender releases
|
||||
paths = _bpy.utils.script_paths("addons")
|
||||
@@ -47,8 +49,11 @@ def paths():
|
||||
|
||||
|
||||
def modules(module_cache):
|
||||
global error_duplicates
|
||||
import os
|
||||
|
||||
error_duplicates = False
|
||||
|
||||
path_list = paths()
|
||||
|
||||
# fake module importing
|
||||
@@ -117,7 +122,12 @@ def modules(module_cache):
|
||||
modules_stale -= {mod_name}
|
||||
mod = module_cache.get(mod_name)
|
||||
if mod:
|
||||
if mod.__time__ != os.path.getmtime(mod_path):
|
||||
if mod.__file__ != mod_path:
|
||||
print("multiple addons with the same name:\n %r\n %r" %
|
||||
(mod.__file__, mod_path))
|
||||
error_duplicates = True
|
||||
|
||||
elif mod.__time__ != os.path.getmtime(mod_path):
|
||||
print("reloading addon:", mod_name, mod.__time__, os.path.getmtime(mod_path), mod_path)
|
||||
del module_cache[mod_name]
|
||||
mod = None
|
||||
|
||||
Reference in New Issue
Block a user