From 69a6092eb74b90b1db9220480e542ff22e9890c6 Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Mon, 30 Jul 2018 13:54:01 +0200 Subject: [PATCH] Properly shutdown everything on window close - Properly shutdown applet on window close - Properly remove system tray icon on close - Shutdown executorService on shutdown Signed-off-by: Tomas Slusny --- .../main/java/net/runelite/client/RuneLite.java | 5 +++++ .../java/net/runelite/client/ui/ClientUI.java | 16 ++++++++++++++++ 2 files changed, 21 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 986cf46a6d..d2a72afedb 100644 --- a/runelite-client/src/main/java/net/runelite/client/RuneLite.java +++ b/runelite-client/src/main/java/net/runelite/client/RuneLite.java @@ -35,6 +35,7 @@ import java.io.File; import java.lang.management.ManagementFactory; import java.lang.management.RuntimeMXBean; import java.util.Locale; +import java.util.concurrent.ScheduledExecutorService; import javax.annotation.Nullable; import javax.inject.Provider; import javax.inject.Singleton; @@ -111,6 +112,9 @@ public class RuneLite @Inject private OverlayManager overlayManager; + @Inject + private ScheduledExecutorService executorService; + @Inject private Provider itemManager; @@ -294,6 +298,7 @@ public class RuneLite { clientSessionManager.shutdown(); discordService.close(); + executorService.shutdown(); } @VisibleForTesting diff --git a/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java b/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java index 64e54158ba..69afa967d3 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java @@ -36,6 +36,7 @@ import java.awt.Graphics; import java.awt.GraphicsConfiguration; import java.awt.LayoutManager; import java.awt.Rectangle; +import java.awt.SystemTray; import java.awt.TrayIcon; import java.awt.image.BufferedImage; import javax.annotation.Nullable; @@ -267,6 +268,21 @@ public class ClientUI { saveClientBoundsConfig(); runelite.shutdown(); + + if (SystemTray.isSupported()) + { + SystemTray.getSystemTray().remove(trayIcon); + } + + if (client != null) + { + client.stop(); + } + + if (client instanceof Client) + { + ((Client)client).shutDown(); + } }, this::showWarningOnExit );