From 9a5a7a44f9cd3a2b1ef75189de9d20991d1c7c78 Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 22 Jul 2017 19:05:03 -0400 Subject: [PATCH] runelite-client: don't draw overlays on event dispatch thread It is causing deadlocks as the client holds a lock on client in paint() at the time draw() is called, and the EDT then causes RSCanvas (which is the listener) to get triggered when the client draws onto the canvas, which goes back to client.paint() and deadlocks. --- .../net/runelite/client/callback/Hooks.java | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java b/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java index 4a251764b7..41182b6637 100644 --- a/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java +++ b/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java @@ -26,8 +26,6 @@ package net.runelite.client.callback; import java.awt.Graphics; import java.awt.image.BufferedImage; -import java.lang.reflect.InvocationTargetException; -import javax.swing.SwingUtilities; import net.runelite.api.ChatMessageType; import net.runelite.api.MenuAction; import net.runelite.api.Skill; @@ -90,24 +88,11 @@ public class Hooks OverlayRenderer renderer = runelite.getRenderer(); - assert !SwingUtilities.isEventDispatchThread(); - try { - SwingUtilities.invokeAndWait(() -> - { - - try - { - renderer.render(image); - } - catch (Exception ex) - { - logger.warn("Error during overlay rendering", ex); - } - }); + renderer.render(image); } - catch (InterruptedException | InvocationTargetException ex) + catch (Exception ex) { logger.warn("Error during overlay rendering", ex); }