Invoke GameEventManager events on ClientThread

Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
This commit is contained in:
Tomas Slusny
2018-10-16 21:42:33 +02:00
parent a6293b2aaf
commit 2eca81e2ba

View File

@@ -50,17 +50,20 @@ import net.runelite.api.events.ItemSpawned;
import net.runelite.api.events.NpcSpawned; import net.runelite.api.events.NpcSpawned;
import net.runelite.api.events.PlayerSpawned; import net.runelite.api.events.PlayerSpawned;
import net.runelite.api.events.WallObjectSpawned; import net.runelite.api.events.WallObjectSpawned;
import net.runelite.client.callback.ClientThread;
@Singleton @Singleton
public class GameEventManager public class GameEventManager
{ {
private final EventBus eventBus = new EventBus(); private final EventBus eventBus = new EventBus();
private final Client client; private final Client client;
private final ClientThread clientThread;
@Inject @Inject
private GameEventManager(Client client) private GameEventManager(Client client, ClientThread clientThread)
{ {
this.client = client; this.client = client;
this.clientThread = clientThread;
} }
/** /**
@@ -70,7 +73,6 @@ public class GameEventManager
*/ */
private void forEachTile(Consumer<Tile> consumer) private void forEachTile(Consumer<Tile> consumer)
{ {
final Scene scene = client.getScene(); final Scene scene = client.getScene();
final Tile[][][] tiles = scene.getTiles(); final Tile[][][] tiles = scene.getTiles();
@@ -105,6 +107,9 @@ public class GameEventManager
return; return;
} }
clientThread.invoke(() ->
{
eventBus.register(subscriber); eventBus.register(subscriber);
for (final InventoryID inventory : InventoryID.values()) for (final InventoryID inventory : InventoryID.values())
@@ -188,5 +193,6 @@ public class GameEventManager
}); });
eventBus.unregister(subscriber); eventBus.unregister(subscriber);
});
} }
} }