From 2d03cf137409584ae38d4c577008c764a3be6b40 Mon Sep 17 00:00:00 2001 From: ThatGamerBlue Date: Mon, 22 Feb 2021 00:16:15 +0000 Subject: [PATCH] clientthread: implement executor and make Schedulers.single() use it --- .../client/callback/ClientThread.java | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/callback/ClientThread.java b/runelite-client/src/main/java/net/runelite/client/callback/ClientThread.java index 2470b55056..3a650b0e85 100644 --- a/runelite-client/src/main/java/net/runelite/client/callback/ClientThread.java +++ b/runelite-client/src/main/java/net/runelite/client/callback/ClientThread.java @@ -25,21 +25,38 @@ package net.runelite.client.callback; import com.google.inject.Inject; +import io.reactivex.rxjava3.plugins.RxJavaPlugins; +import io.reactivex.rxjava3.schedulers.Schedulers; import java.util.Iterator; import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.concurrent.Executor; import java.util.function.BooleanSupplier; import javax.inject.Singleton; import lombok.extern.slf4j.Slf4j; import net.runelite.api.Client; +import org.jetbrains.annotations.NotNull; @Singleton @Slf4j -public class ClientThread +public class ClientThread implements Executor { private final ConcurrentLinkedQueue invokes = new ConcurrentLinkedQueue<>(); + private final Client client; + @Inject - private Client client; + private ClientThread(Client client) + { + this.client = client; + + RxJavaPlugins.setSingleSchedulerHandler(old -> Schedulers.from(this)); + } + + @Override + public void execute(@NotNull Runnable r) + { + invoke(r); + } public void invoke(Runnable r) {