clientthread: implement executor and make Schedulers.single() use it

This commit is contained in:
ThatGamerBlue
2021-02-22 00:16:15 +00:00
parent db49157fc8
commit 2d03cf1374

View File

@@ -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<BooleanSupplier> 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)
{