From 718dd363861a7839a99e500a3a3475e745b57993 Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Mon, 30 Jul 2018 14:16:43 +0200 Subject: [PATCH] Stop plugins on shutdown Signed-off-by: Tomas Slusny --- .../main/java/net/runelite/client/RuneLite.java | 1 + .../runelite/client/plugins/PluginManager.java | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/runelite-client/src/main/java/net/runelite/client/RuneLite.java b/runelite-client/src/main/java/net/runelite/client/RuneLite.java index d2a72afedb..229eec62c8 100644 --- a/runelite-client/src/main/java/net/runelite/client/RuneLite.java +++ b/runelite-client/src/main/java/net/runelite/client/RuneLite.java @@ -296,6 +296,7 @@ public class RuneLite public void shutdown() { + pluginManager.stopCorePlugins(); clientSessionManager.shutdown(); discordService.close(); executorService.shutdown(); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java b/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java index 5b0fc62e46..fd7cec8c81 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java @@ -214,6 +214,23 @@ public class PluginManager } } + public void stopCorePlugins() + { + List scannedPlugins = new ArrayList<>(plugins); + for (Plugin plugin : scannedPlugins) + { + try + { + stopPlugin(plugin); + plugins.remove(plugin); + } + catch (PluginInstantiationException ex) + { + log.warn("Unable to stop plugin {}. {}", plugin.getClass().getSimpleName(), ex); + } + } + } + List scanAndInstantiate(ClassLoader classLoader, String packageName) throws IOException { MutableGraph> graph = GraphBuilder