From 7dfd5128ff1ec95ab95deaebde525fc4305f5f4b Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Thu, 24 Jan 2019 17:34:05 +0100 Subject: [PATCH] Move menu entry nulling to BeforeRender As render() and ClientTick rates are inconsistent (unless user has 50FPS, then they are same) the menu entries can flicker because ClientTick will be called more often than render and so when frame is skipped, menu entry is nulled and that causes flicker. Signed-off-by: Tomas Slusny --- .../net/runelite/client/ui/overlay/OverlayRenderer.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 9a69fe7627..7c290727bb 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 @@ -41,6 +41,7 @@ import net.runelite.api.Client; import net.runelite.api.GameState; import net.runelite.api.MenuAction; import net.runelite.api.MenuEntry; +import net.runelite.api.events.BeforeRender; import net.runelite.api.events.ClientTick; import net.runelite.api.events.FocusChanged; import net.runelite.api.widgets.Widget; @@ -119,7 +120,6 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener if (client.isMenuOpen()) { - menuEntries = null; return; } @@ -130,7 +130,11 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener System.arraycopy(menuEntries, 0, newEntries, 1, menuEntries.length); // Add overlay menu entries System.arraycopy(clientMenuEntries, 1, newEntries, menuEntries.length + 1, clientMenuEntries.length - 1); // Add remaining menu entries client.setMenuEntries(newEntries); + } + @Subscribe + public void onBeforeRender(BeforeRender event) + { menuEntries = null; }