From 6e080949f9943ac118b62840bac0624f1f3e6d7b Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Fri, 18 Jan 2019 21:11:00 +0100 Subject: [PATCH 1/2] Shutdown plugins on window close Closes #6646 Signed-off-by: Tomas Slusny --- .../main/java/net/runelite/client/RuneLite.java | 14 ++++++++++++++ 1 file changed, 14 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 06190a9a93..d8e0d6cad1 100644 --- a/runelite-client/src/main/java/net/runelite/client/RuneLite.java +++ b/runelite-client/src/main/java/net/runelite/client/RuneLite.java @@ -55,6 +55,8 @@ import net.runelite.client.game.ItemManager; import net.runelite.client.game.LootManager; import net.runelite.client.game.chatbox.ChatboxPanelManager; import net.runelite.client.menus.MenuManager; +import net.runelite.client.plugins.Plugin; +import net.runelite.client.plugins.PluginInstantiationException; import net.runelite.client.plugins.PluginManager; import net.runelite.client.rs.ClientUpdateCheckMode; import net.runelite.client.ui.ClientUI; @@ -293,6 +295,18 @@ public class RuneLite { clientSessionManager.shutdown(); discordService.close(); + + for (final Plugin plugin : pluginManager.getPlugins()) + { + try + { + pluginManager.stopPlugin(plugin); + } + catch (PluginInstantiationException e) + { + log.warn("Failed to gracefully close plugin", e); + } + } } @VisibleForTesting From b893e97ccf92c3874f5e9d359599fd1f37de5f13 Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Fri, 18 Jan 2019 21:20:14 +0100 Subject: [PATCH 2/2] Move close handling to windowClosed event This callback is called more reliably than windowClosing when killing window from outside. Signed-off-by: Tomas Slusny --- .../main/java/net/runelite/client/util/SwingUtil.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/util/SwingUtil.java b/runelite-client/src/main/java/net/runelite/client/util/SwingUtil.java index 39fc738f1f..5080db032a 100644 --- a/runelite-client/src/main/java/net/runelite/client/util/SwingUtil.java +++ b/runelite-client/src/main/java/net/runelite/client/util/SwingUtil.java @@ -216,10 +216,16 @@ public class SwingUtil if (result == JOptionPane.OK_OPTION) { - callback.run(); - System.exit(0); + frame.dispose(); } } + + @Override + public void windowClosed(WindowEvent event) + { + callback.run(); + System.exit(0); + } }); }