tFix for dynamic loading and unloading of plugins - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit f9047c6df0f7463e793d5980df31e08743302f52 DIR parent 26f2c757d39d32de7d32a058ff9147a658713c9a HTML Author: Neil Booth <kyuupichan@gmail.com> Date: Sun, 6 Sep 2015 19:35:14 +0900 Fix for dynamic loading and unloading of plugins Need to add and remove thread jobs Diffstat: M lib/plugins.py | 7 +++++++ 1 file changed, 7 insertions(+), 0 deletions(-) --- DIR diff --git a/lib/plugins.py b/lib/plugins.py t@@ -73,6 +73,8 @@ class Plugins: # Inform the plugin of our windows for window in self.windows: plugin.on_new_window(window) + if self.network: + self.network.add_jobs(plugin.thread_jobs()) self.plugins[name] = plugin self.print_error("loaded", name) return plugin t@@ -81,6 +83,10 @@ class Plugins: traceback.print_exc(file=sys.stdout) return None + def close_plugin(self, plugin): + if self.network: + self.network.remove_jobs(plugin.thread_jobs()) + def toggle_enabled(self, config, name): p = self.get(name) config.set_key('use_' + name, p is None, True) t@@ -199,6 +205,7 @@ class BasePlugin: l = hooks.get(k, []) l.remove((self, getattr(self, k))) hooks[k] = l + self.parent.close_plugin(self) def print_error(self, *msg): print_error("[%s]"%self.name, *msg)