destroy even more images when closing
This commit is contained in:
@@ -42,7 +42,7 @@ import org.newdawn.slick.Animation;
|
||||
import org.newdawn.slick.Color;
|
||||
import org.newdawn.slick.Graphics;
|
||||
import org.newdawn.slick.Image;
|
||||
import yugecin.opsudance.Dancer;
|
||||
import yugecin.opsudance.utils.SlickUtil;
|
||||
|
||||
/**
|
||||
* Holds game data and renders all related elements.
|
||||
@@ -101,8 +101,16 @@ public class GameData {
|
||||
* This does NOT destroy images, so be careful of memory leaks!
|
||||
*/
|
||||
public static void clearReferences() {
|
||||
for (Grade grade : Grade.values())
|
||||
for (Grade grade : Grade.values()) {
|
||||
grade.menuImage = null;
|
||||
}
|
||||
}
|
||||
|
||||
public static void destroyImages() {
|
||||
for (Grade grade : Grade.values()) {
|
||||
SlickUtil.destroyImage(grade.menuImage);
|
||||
grade.menuImage = null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -28,6 +28,7 @@ import org.newdawn.slick.Animation;
|
||||
import org.newdawn.slick.Image;
|
||||
import org.newdawn.slick.SlickException;
|
||||
import org.newdawn.slick.util.ResourceLoader;
|
||||
import yugecin.opsudance.utils.SlickUtil;
|
||||
|
||||
/**
|
||||
* Game images.
|
||||
@@ -461,37 +462,18 @@ public enum GameImage {
|
||||
}
|
||||
}
|
||||
|
||||
public static void destroyAll() {
|
||||
public static void destroyImages() {
|
||||
for (GameImage img : GameImage.values()) {
|
||||
destroyAll(img.defaultImages);
|
||||
destroyImage(img.defaultImage);
|
||||
destroyAll(img.skinImages);
|
||||
destroyImage(img.skinImage);
|
||||
SlickUtil.destroyImages(img.defaultImages);
|
||||
SlickUtil.destroyImage(img.defaultImage);
|
||||
SlickUtil.destroyImages(img.skinImages);
|
||||
SlickUtil.destroyImage(img.skinImage);
|
||||
img.isSkinned = false;
|
||||
img.defaultImages = img.skinImages = null;
|
||||
img.defaultImage = img.skinImage = null;
|
||||
}
|
||||
}
|
||||
|
||||
public static void destroyAll(Image[] imgs) {
|
||||
if (imgs == null) {
|
||||
return;
|
||||
}
|
||||
for (Image i : imgs) {
|
||||
destroyImage(i);
|
||||
}
|
||||
}
|
||||
|
||||
public static void destroyImage(Image image) {
|
||||
if (image == null) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
image.destroy();
|
||||
} catch (SlickException ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the bitmask image type from a type string.
|
||||
* @param type the type string
|
||||
|
||||
@@ -22,6 +22,7 @@ import itdelatrisu.opsu.Options;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.LinkedList;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -59,6 +60,14 @@ public class Beatmap implements Comparable<Beatmap> {
|
||||
*/
|
||||
public static void clearBackgroundImageCache() { bgImageCache.clear(); }
|
||||
|
||||
public static void destroyBackgroundImageCache() {
|
||||
Collection<ImageLoader> values = bgImageCache.values();
|
||||
for (ImageLoader value : values) {
|
||||
value.destroy();
|
||||
}
|
||||
bgImageCache.clear();
|
||||
}
|
||||
|
||||
/** The OSU File object associated with this beatmap. */
|
||||
private File file;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user