From 262fa3ba47efd65d7f6860cc061f0070e6f22d0f Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 20 Jul 2019 21:47:49 -0400 Subject: [PATCH] ovelay renderer: more gracefully handle exceptions If an overlay throws an exception it should not prevent other overlays in the layer from being rendererd. --- .../client/ui/overlay/OverlayRenderer.java | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java index a9f2e9f017..9e5820470a 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java @@ -37,6 +37,7 @@ import java.util.List; import javax.inject.Inject; import javax.inject.Singleton; import javax.swing.SwingUtilities; +import lombok.extern.slf4j.Slf4j; import net.runelite.api.Client; import net.runelite.api.GameState; import net.runelite.api.MenuAction; @@ -56,6 +57,7 @@ import net.runelite.client.ui.JagexColors; import net.runelite.client.util.ColorUtil; @Singleton +@Slf4j public class OverlayRenderer extends MouseAdapter implements KeyListener { private static final int BORDER = 5; @@ -458,8 +460,23 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener } subGraphics.translate(point.x, point.y); - final Dimension dimension = MoreObjects.firstNonNull(overlay.render(subGraphics), new Dimension()); - subGraphics.dispose(); + + final Dimension overlayDimension; + try + { + overlayDimension = overlay.render(subGraphics); + } + catch (Exception ex) + { + log.warn("Error during overlay rendering", ex); + return; + } + finally + { + subGraphics.dispose(); + } + + final Dimension dimension = MoreObjects.firstNonNull(overlayDimension, new Dimension()); overlay.setBounds(new Rectangle(point, dimension)); }