Fixed issue with async modification of DownloadList. (fixes #62)

Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
This commit is contained in:
Jeffrey Han 2015-03-28 12:41:17 -04:00
parent c15cd5cb4c
commit 77d42d7fd8
2 changed files with 18 additions and 5 deletions

View File

@ -56,9 +56,15 @@ public class DownloadList {
}
/**
* Returns the DownloadNode at an index.
* Returns the DownloadNode at an index, or null if the index is out of bounds.
*/
public DownloadNode getNode(int index) { return nodes.get(index); }
public DownloadNode getNode(int index) {
try {
return nodes.get(index);
} catch (IndexOutOfBoundsException e) {
return null;
}
}
/**
* Gets the Download for a beatmap set ID, or null if not in the list.
@ -100,8 +106,10 @@ public class DownloadList {
* Removes a DownloadNode from the list at the given index.
*/
public void remove(int index) {
DownloadNode node = nodes.remove(index);
map.remove(node.getID());
try {
DownloadNode node = nodes.remove(index);
map.remove(node.getID());
} catch (IndexOutOfBoundsException e) {}
}
/**

View File

@ -300,7 +300,10 @@ public class DownloadsMenu extends BasicGameState {
int index = startDownloadIndex + i;
if (index >= downloadsSize)
break;
DownloadList.get().getNode(index).drawDownload(g, i, index, DownloadNode.downloadContains(mouseX, mouseY, i));
DownloadNode node = DownloadList.get().getNode(index);
if (node == null)
break;
node.drawDownload(g, i, index, DownloadNode.downloadContains(mouseX, mouseY, i));
}
// scroll bar
@ -632,6 +635,8 @@ public class DownloadsMenu extends BasicGameState {
if (DownloadNode.downloadIconContains(x, y, i)) {
SoundController.playSound(SoundEffect.MENUCLICK);
DownloadNode node = DownloadList.get().getNode(index);
if (node == null)
return;
Download dl = node.getDownload();
switch (dl.getStatus()) {
case CANCELLED: