Merge pull request #5981 from deathbeam/varbit-stuff

Move ChatMessageManager#refreshAll to client thread
This commit is contained in:
Tomas Slusny
2018-10-13 18:23:06 +02:00
committed by GitHub

View File

@@ -35,7 +35,6 @@ import java.util.Collection;
import java.util.Objects; import java.util.Objects;
import java.util.Queue; import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
@@ -49,6 +48,7 @@ import net.runelite.api.events.ResizeableChanged;
import net.runelite.api.events.ScriptCallbackEvent; import net.runelite.api.events.ScriptCallbackEvent;
import net.runelite.api.events.SetMessage; import net.runelite.api.events.SetMessage;
import net.runelite.api.events.VarbitChanged; import net.runelite.api.events.VarbitChanged;
import net.runelite.client.callback.ClientThread;
import net.runelite.client.config.ChatColorConfig; import net.runelite.client.config.ChatColorConfig;
import net.runelite.client.util.ColorUtil; import net.runelite.client.util.ColorUtil;
@@ -57,18 +57,20 @@ public class ChatMessageManager
{ {
private final Multimap<ChatMessageType, ChatColor> colorCache = HashMultimap.create(); private final Multimap<ChatMessageType, ChatColor> colorCache = HashMultimap.create();
private final Client client; private final Client client;
private final ScheduledExecutorService executor;
private final ChatColorConfig chatColorConfig; private final ChatColorConfig chatColorConfig;
private final ClientThread clientThread;
private int transparencyVarbit = -1; private int transparencyVarbit = -1;
private final Queue<QueuedMessage> queuedMessages = new ConcurrentLinkedQueue<>(); private final Queue<QueuedMessage> queuedMessages = new ConcurrentLinkedQueue<>();
@Inject @Inject
private ChatMessageManager(Client client, ScheduledExecutorService executor, private ChatMessageManager(
ChatColorConfig chatColorConfig) Client client,
ChatColorConfig chatColorConfig,
ClientThread clientThread)
{ {
this.client = client; this.client = client;
this.executor = executor;
this.chatColorConfig = chatColorConfig; this.chatColorConfig = chatColorConfig;
this.clientThread = clientThread;
} }
@Subscribe @Subscribe
@@ -95,7 +97,7 @@ public class ChatMessageManager
if (event.getGroup().equals("textrecolor")) if (event.getGroup().equals("textrecolor"))
{ {
loadColors(); loadColors();
refreshAll(); clientThread.invokeLater(this::refreshAll);
} }
} }
@@ -594,15 +596,12 @@ public class ChatMessageManager
private void refreshAll() private void refreshAll()
{ {
executor.submit(() -> client.getChatLineMap().values().stream()
{ .filter(Objects::nonNull)
client.getChatLineMap().values().stream() .flatMap(clb -> Arrays.stream(clb.getLines()))
.filter(Objects::nonNull) .filter(Objects::nonNull)
.flatMap(clb -> Arrays.stream(clb.getLines())) .forEach(this::update);
.filter(Objects::nonNull)
.forEach(this::update);
client.refreshChat(); client.refreshChat();
});
} }
} }