From 53da549ec60c12d27075f7196e47e1c940a73bee Mon Sep 17 00:00:00 2001 From: ST0NEWALL <46624825+pklite@users.noreply.github.com> Date: Wed, 7 Aug 2019 11:09:03 -0400 Subject: [PATCH] multilines: fix bug that caused lag/fps spikes after leaving client open and hopping lots of worlds (#1272) * multilines: removes the scheduled method that updated the lines every 1.8s and updates them on clientthread now. seems to have fixed the lag/fps spike that would happen after leaving client open for long time/hopping worlds. adds clipping for lines rendered on minimap Signed-off-by: PKLite * remove unused imports Signed-off-by: PKLite --- .../multiindicators/MultiIndicatorsConfig.java | 2 +- .../MultiIndicatorsMinimapOverlay.java | 14 ++++++++++++++ .../multiindicators/MultiIndicatorsPlugin.java | 14 +++----------- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/multiindicators/MultiIndicatorsConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/multiindicators/MultiIndicatorsConfig.java index da14992e01..595e0fba78 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/multiindicators/MultiIndicatorsConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/multiindicators/MultiIndicatorsConfig.java @@ -74,7 +74,7 @@ public interface MultiIndicatorsConfig extends Config ) default boolean showWildernessLevelLines() { - return true; + return false; } @ConfigItem( diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/multiindicators/MultiIndicatorsMinimapOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/multiindicators/MultiIndicatorsMinimapOverlay.java index 5ea7f57b24..c4df508926 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/multiindicators/MultiIndicatorsMinimapOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/multiindicators/MultiIndicatorsMinimapOverlay.java @@ -38,6 +38,8 @@ import net.runelite.api.Client; import net.runelite.api.Perspective; import net.runelite.api.Point; import net.runelite.api.coords.LocalPoint; +import net.runelite.api.widgets.Widget; +import net.runelite.api.widgets.WidgetInfo; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayLayer; import net.runelite.client.ui.overlay.OverlayPosition; @@ -103,6 +105,18 @@ public class MultiIndicatorsMinimapOverlay extends Overlay return null; } + Widget w; + if (client.getWidget(WidgetInfo.FIXED_VIEWPORT_MINIMAP_DRAW_AREA) != null) + { + w = client.getWidget(WidgetInfo.FIXED_VIEWPORT_MINIMAP_DRAW_AREA); + } + else + { + w = client.getWidget(WidgetInfo.RESIZABLE_MINIMAP_STONES_DRAW_AREA); + } + Rectangle minimapClip = w.getBounds(); + graphics.setClip(minimapClip); + GeneralPath multicombatPath = plugin.getMulticombatPathToDisplay()[client.getPlane()]; GeneralPath pvpPath = plugin.getPvpPathToDisplay()[client.getPlane()]; GeneralPath wildernessLevelLinesPath = plugin.getWildernessLevelLinesPathToDisplay()[client.getPlane()]; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/multiindicators/MultiIndicatorsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/multiindicators/MultiIndicatorsPlugin.java index 337b9539b8..d93a8a0ec7 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/multiindicators/MultiIndicatorsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/multiindicators/MultiIndicatorsPlugin.java @@ -29,7 +29,6 @@ import com.google.inject.Provides; import java.awt.Color; import java.awt.Rectangle; import java.awt.geom.GeneralPath; -import java.time.temporal.ChronoUnit; import java.util.Arrays; import javax.inject.Inject; import javax.inject.Singleton; @@ -55,7 +54,6 @@ import net.runelite.client.eventbus.EventBus; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginType; -import net.runelite.client.task.Schedule; import net.runelite.client.ui.overlay.OverlayManager; @PluginDescriptor( @@ -183,15 +181,12 @@ public class MultiIndicatorsPlugin extends Plugin // sometimes the lines get offset (seems to happen when there is a delay // due to map reloading when walking/running "Loading - please wait") // resetting the lines generation logic fixes this - @Schedule( - period = 1800, - unit = ChronoUnit.MILLIS - ) + public void update() { if (client.getGameState() == GameState.LOGGED_IN) { - findLinesInScene(); + clientThread.invokeLater(this::findLinesInScene); } } @@ -293,10 +288,7 @@ public class MultiIndicatorsPlugin extends Plugin // Generate lines for multicombat zones if (this.multicombatZoneVisibility == ZoneVisibility.HIDE) { - for (int i = 0; i < multicombatPathToDisplay.length; i++) - { - multicombatPathToDisplay[i] = null; - } + Arrays.fill(multicombatPathToDisplay, null); } else {