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.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));
}