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:
authorCampbell Barton <ideasman42@gmail.com>2015-06-14 15:19:26 +0300
committerCampbell Barton <ideasman42@gmail.com>2015-06-14 15:26:42 +0300
commiteb0310950c9e6dec9ea1da294430ae8fcf98021e (patch)
treefe8b394e3730a020227afba01fa39d406cfd8e08 /release/scripts
parent18629918622c1acfb4cc69176c98df2e13589c00 (diff)
Fix error enabling an already enabled addon
Would run register() twice causing warning with `register_module()` which expects new classes to be defined. Now run unregister() before re-registering.
Diffstat (limited to 'release/scripts')
-rw-r--r--release/scripts/modules/addon_utils.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/release/scripts/modules/addon_utils.py b/release/scripts/modules/addon_utils.py
index 4168f0a1f92..e14b25b1e65 100644
--- a/release/scripts/modules/addon_utils.py
+++ b/release/scripts/modules/addon_utils.py
@@ -278,6 +278,20 @@ def enable(module_name, default_set=False, persistent=False, handle_error=None):
mod = sys.modules.get(module_name)
# chances of the file _not_ existing are low, but it could be removed
if mod and os.path.exists(mod.__file__):
+
+ if getattr(mod, "__addon_enabled__", False):
+ # This is an unlikely situation,
+ # re-register if the module is enabled.
+ # Note: the UI doesn't allow this to happen,
+ # in most cases the caller should 'check()' first.
+ try:
+ mod.unregister()
+ except:
+ print("Exception in module unregister(): %r" %
+ getattr(mod, "__file__", module_name))
+ handle_error()
+ return None
+
mod.__addon_enabled__ = False
mtime_orig = getattr(mod, "__time__", 0)
mtime_new = os.path.getmtime(mod.__file__)