From 801a907f1530361ced9ac3a133d0f16f4b7f2bb7 Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Sun, 17 Dec 2017 14:18:15 +0100 Subject: [PATCH] Isolate graphics for each overlay (#267) Clone graphics before rendering overlay, then use the cloned graphics for the overlay and dispose it afterwards to prevent any unwanted side effects from overlay. Signed-off-by: Tomas Slusny --- .../runelite/client/ui/overlay/OverlayRenderer.java | 10 +++------- 1 file changed, 3 insertions(+), 7 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 95684b8d7e..7b5ec6f8bf 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 @@ -28,11 +28,9 @@ import com.google.common.base.MoreObjects; import com.google.common.eventbus.Subscribe; import java.awt.Color; import java.awt.Dimension; -import java.awt.Font; import java.awt.Graphics2D; import java.awt.Point; import java.awt.Rectangle; -import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.List; @@ -261,11 +259,9 @@ public class OverlayRenderer private Dimension safeRender(RenderableEntity entity, Graphics2D graphics, Point point) { - final Font font = graphics.getFont(); - final AffineTransform transform = graphics.getTransform(); - final Dimension dimension = entity.render(graphics, point); - graphics.setFont(font); - graphics.setTransform(transform); + final Graphics2D subGraphics = (Graphics2D) graphics.create(); + final Dimension dimension = entity.render(subGraphics, point); + subGraphics.dispose(); return dimension; }