From aebeba06ad75bdf6e8c1518d665fdd4a5baa1e03 Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 14 May 2017 18:52:40 -0400 Subject: [PATCH] runelite-client: load plugins on the main thread --- .../java/net/runelite/client/plugins/Plugin.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/Plugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/Plugin.java index f73b4fc67c..d2e4967592 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/Plugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/Plugin.java @@ -28,6 +28,7 @@ import com.google.common.util.concurrent.AbstractIdleService; import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.concurrent.Executor; import net.runelite.client.ui.overlay.Overlay; public abstract class Plugin extends AbstractIdleService @@ -42,4 +43,17 @@ public abstract class Plugin extends AbstractIdleService Overlay overlay = getOverlay(); return overlay != null ? Arrays.asList(overlay) : Collections.EMPTY_LIST; } + + /** + * Override AbstractIdleService's default executor to instead execute in + * the main thread. Prevents plugins from all being initialized from + * different threads, which causes the plugin order on the navbar to be + * undefined + * @return + */ + @Override + protected Executor executor() + { + return r -> r.run(); + } }