Use FIFO queue for loaded replays in replay center/viewer
This commit is contained in:
@@ -22,8 +22,9 @@ import org.lwjgl.input.Keyboard;
|
||||
import java.awt.*;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
|
||||
public class GuiReplayCenter extends GuiScreen implements GuiYesNoCallback {
|
||||
|
||||
@@ -41,6 +42,8 @@ public class GuiReplayCenter extends GuiScreen implements GuiYesNoCallback {
|
||||
private GuiAdvancedTextField searchNameInput, searchServerInput;
|
||||
private GuiButton searchActionButton;
|
||||
|
||||
private Queue<GuiReplayListEntry> loadedReplaysQueue = new ConcurrentLinkedQueue<GuiReplayListEntry>();
|
||||
|
||||
private boolean showSearchFields = false;
|
||||
|
||||
public static GuiYesNo getYesNoGui(GuiYesNoCallback p_152129_0_, int p_152129_2_) {
|
||||
@@ -449,6 +452,9 @@ public class GuiReplayCenter extends GuiScreen implements GuiYesNoCallback {
|
||||
searchNameInput.updateCursorCounter();
|
||||
searchServerInput.updateCursorCounter();
|
||||
}
|
||||
while (!loadedReplaysQueue.isEmpty()) {
|
||||
currentList.addEntry(currentList.getEntries().size() - 1, loadedReplaysQueue.poll());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -485,6 +491,7 @@ public class GuiReplayCenter extends GuiScreen implements GuiYesNoCallback {
|
||||
Thread.currentThread().interrupt();
|
||||
}
|
||||
}
|
||||
loadedReplaysQueue.clear();
|
||||
}
|
||||
|
||||
public void show(final Pagination pagination) {
|
||||
@@ -512,12 +519,7 @@ public class GuiReplayCenter extends GuiScreen implements GuiYesNoCallback {
|
||||
ReplayMod.apiClient.downloadThumbnail(i.getId(), tmp);
|
||||
}
|
||||
final GuiReplayListEntry entry = new GuiReplayListEntry(currentList, i, tmp);
|
||||
mc.addScheduledTask(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
currentList.addEntry(currentList.getEntries().size() - 1, entry);
|
||||
}
|
||||
});
|
||||
loadedReplaysQueue.offer(entry);
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
|
||||
public class GuiReplayViewer extends GuiScreen implements GuiYesNoCallback {
|
||||
|
||||
@@ -52,6 +53,8 @@ public class GuiReplayViewer extends GuiScreen implements GuiYesNoCallback {
|
||||
private GuiButton deleteButton;
|
||||
private boolean delete_file = false;
|
||||
|
||||
private Queue<Runnable> loadedReplaysQueue = new ConcurrentLinkedQueue<Runnable>();
|
||||
|
||||
private Thread fileReloader;
|
||||
|
||||
private class FileReloaderThread extends Thread {
|
||||
@@ -86,7 +89,7 @@ public class GuiReplayViewer extends GuiScreen implements GuiYesNoCallback {
|
||||
}
|
||||
|
||||
final File thumb = tmp;
|
||||
mc.addScheduledTask(new Runnable() {
|
||||
loadedReplaysQueue.offer(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
addEntry(file, metaData, thumb);
|
||||
@@ -273,6 +276,14 @@ public class GuiReplayViewer extends GuiScreen implements GuiYesNoCallback {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateScreen() {
|
||||
super.updateScreen();
|
||||
while (!loadedReplaysQueue.isEmpty()) {
|
||||
loadedReplaysQueue.poll().run();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean currentFileUploaded = false;
|
||||
|
||||
public void setButtonsEnabled(boolean b) {
|
||||
|
||||
Reference in New Issue
Block a user