From 7fe767e2655623e2c2dcbe750051c0dabf8f4298 Mon Sep 17 00:00:00 2001 From: Lotto Date: Sat, 17 Feb 2018 23:46:21 +0100 Subject: [PATCH] screenshot-plugin: run image saving logic in another thread --- .../plugins/screenshot/ScreenshotPlugin.java | 42 ++++++++++++------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java index 8f5bdac0fa..540f8573c0 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java @@ -46,6 +46,7 @@ import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; +import java.util.concurrent.ScheduledExecutorService; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.imageio.ImageIO; @@ -120,6 +121,9 @@ public class ScreenshotPlugin extends Plugin @Inject private OverlayRenderer overlayRenderer; + @Inject + private ScheduledExecutorService executor; + private JButton titleBarButton; @Provides @@ -397,34 +401,40 @@ public class ScreenshotPlugin extends Plugin } } - File playerFolder = RuneLite.SCREENSHOT_DIR; - + File playerFolder; if (client.getLocalPlayer() != null) { playerFolder = new File(RuneLite.SCREENSHOT_DIR, client.getLocalPlayer().getName()); } + else + { + playerFolder = RuneLite.SCREENSHOT_DIR; + } playerFolder.mkdirs(); - try + executor.execute(() -> { - File screenshotFile = new File(playerFolder, fileName + ".png"); - - ImageIO.write(screenshot, "PNG", screenshotFile); - - if (config.uploadScreenshot()) + try { - uploadScreenshot(screenshotFile); + File screenshotFile = new File(playerFolder, fileName + ".png"); + + ImageIO.write(screenshot, "PNG", screenshotFile); + + if (config.uploadScreenshot()) + { + uploadScreenshot(screenshotFile); + } + else if (config.notifyWhenTaken()) + { + notifier.notify("A screenshot was saved to " + screenshotFile, TrayIcon.MessageType.INFO); + } } - else if (config.notifyWhenTaken()) + catch (IOException ex) { - notifier.notify("A screenshot was saved to " + screenshotFile, TrayIcon.MessageType.INFO); + log.warn("error writing screenshot", ex); } - } - catch (IOException ex) - { - log.warn("error writing screenshot", ex); - } + }); }); }