ovelay renderer: more gracefully handle exceptions

If an overlay throws an exception it should not prevent other overlays
in the layer from being rendererd.
This commit is contained in:
Adam
2019-07-20 21:47:49 -04:00
parent 43dedd08dc
commit 262fa3ba47

View File

@@ -37,6 +37,7 @@ import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.MenuAction; import net.runelite.api.MenuAction;
@@ -56,6 +57,7 @@ import net.runelite.client.ui.JagexColors;
import net.runelite.client.util.ColorUtil; import net.runelite.client.util.ColorUtil;
@Singleton @Singleton
@Slf4j
public class OverlayRenderer extends MouseAdapter implements KeyListener public class OverlayRenderer extends MouseAdapter implements KeyListener
{ {
private static final int BORDER = 5; private static final int BORDER = 5;
@@ -458,8 +460,23 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener
} }
subGraphics.translate(point.x, point.y); 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)); overlay.setBounds(new Rectangle(point, dimension));
} }