From 53a7067c2458c2f38ff712c6ec9e2f2b36a5024a Mon Sep 17 00:00:00 2001 From: jperon Date: Mon, 7 Dec 2020 20:29:03 +0100 Subject: [PATCH] FileManager: don't load already loaded plugins (#6958) FileManager:init is called by FileManager:reinit, which caused duplicate loads. Those can't be useful, (for example to re-load a modified plugin on runtime), as PluginLoader:loadPlugins memoizes loaded plugins. --- frontend/apps/filemanager/filemanager.lua | 25 +++++++++++++---------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/frontend/apps/filemanager/filemanager.lua b/frontend/apps/filemanager/filemanager.lua index e002133e2..1c8d8ad14 100644 --- a/frontend/apps/filemanager/filemanager.lua +++ b/frontend/apps/filemanager/filemanager.lua @@ -479,19 +479,22 @@ function FileManager:init() table.insert(self, DeviceListener:new{ ui = self }) -- koreader plugins - for _,plugin_module in ipairs(PluginLoader:loadPlugins()) do - if not plugin_module.is_doc_only then - local ok, plugin_or_err = PluginLoader:createPluginInstance( - plugin_module, { ui = self, }) - -- Keep references to the modules which do not register into menu. - if ok then - local name = plugin_module.name - if name then self[name] = plugin_or_err end - table.insert(self, plugin_or_err) - logger.info("FM loaded plugin", name, - "at", plugin_module.path) + if not self._plugins_loaded then + for _,plugin_module in ipairs(PluginLoader:loadPlugins()) do + if not plugin_module.is_doc_only then + local ok, plugin_or_err = PluginLoader:createPluginInstance( + plugin_module, { ui = self, }) + -- Keep references to the modules which do not register into menu. + if ok then + local name = plugin_module.name + if name then self[name] = plugin_or_err end + table.insert(self, plugin_or_err) + logger.info("FM loaded plugin", name, + "at", plugin_module.path) + end end end + self._plugins_loaded = true end if Device:hasWifiToggle() then