[Bf-blender-cvs] [f98ec76] blender-v2.75-release: Fix error enabling an already enabled addon

Campbell Barton noreply at git.blender.org
Thu Jun 18 17:37:15 CEST 2015


Commit: f98ec7607f90b8aaa78ae2bedbf66fb691521a87
Author: Campbell Barton
Date:   Sun Jun 14 22:19:26 2015 +1000
Branches: blender-v2.75-release
https://developer.blender.org/rBf98ec7607f90b8aaa78ae2bedbf66fb691521a87

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.

===================================================================

M	release/scripts/modules/addon_utils.py

===================================================================

diff --git a/release/scripts/modules/addon_utils.py b/release/scripts/modules/addon_utils.py
index 4168f0a..e14b25b 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__)




More information about the Bf-blender-cvs mailing list