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:
@@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user