further optimized music selection screen
This commit is contained in:
parent
97afc449b2
commit
8e68157273
@ -131,7 +131,6 @@ public class MusicSelectionPage extends Page implements Observer {
|
|||||||
|
|
||||||
if (frameUsed) {
|
if (frameUsed) {
|
||||||
frameUsed = false;
|
frameUsed = false;
|
||||||
simpleDebug("New frame.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (down) {
|
if (down) {
|
||||||
@ -259,7 +258,7 @@ public class MusicSelectionPage extends Page implements Observer {
|
|||||||
private Thread thread;
|
private Thread thread;
|
||||||
private String name = "Music-Selection-Loader-Thread";
|
private String name = "Music-Selection-Loader-Thread";
|
||||||
private volatile boolean work = true;
|
private volatile boolean work = true;
|
||||||
private LinkedBlockingQueue<AudioMetadata> queue;
|
private LinkedBlockingQueue<MusicSelectable> queue;
|
||||||
public musicSelectionLoaderThread() {
|
public musicSelectionLoaderThread() {
|
||||||
queue = new LinkedBlockingQueue<>();
|
queue = new LinkedBlockingQueue<>();
|
||||||
}
|
}
|
||||||
@ -267,11 +266,15 @@ public class MusicSelectionPage extends Page implements Observer {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
while (work) {
|
while (work) {
|
||||||
AudioMetadata metadata;
|
|
||||||
try {
|
try {
|
||||||
metadata = queue.take();
|
MusicSelectable selectable = queue.take();
|
||||||
metadata.loadAlbumCover();
|
if (!selectable.isOffScreen()) {
|
||||||
simpleDebug("Loading " + metadata.getTitle());
|
selectable.getMetadata().loadAlbumCover();
|
||||||
|
selectable.loadAttempted();
|
||||||
|
simpleDebug("Loaded " + selectable.getMetadata().getTitle());
|
||||||
|
} else {
|
||||||
|
simpleDebug("Skipping " + selectable.getMetadata().getTitle());
|
||||||
|
}
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
simpleDebug("Thread was interupted.");
|
simpleDebug("Thread was interupted.");
|
||||||
}
|
}
|
||||||
@ -300,8 +303,8 @@ public class MusicSelectionPage extends Page implements Observer {
|
|||||||
queue.clear();
|
queue.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void queue(AudioMetadata metadata) {
|
public void queue(MusicSelectable selectable) {
|
||||||
queue.add(metadata);
|
queue.add(selectable);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -312,12 +315,11 @@ public class MusicSelectionPage extends Page implements Observer {
|
|||||||
private Table informationTable;
|
private Table informationTable;
|
||||||
private Label name, artist;
|
private Label name, artist;
|
||||||
private Label time;
|
private Label time;
|
||||||
private boolean offScreen;
|
|
||||||
private float timeSinceChanged;
|
private float timeSinceChanged;
|
||||||
private AudioMetadata metadata;
|
private AudioMetadata metadata;
|
||||||
private Texture defaultAlbumArt;
|
private Texture defaultAlbumArt;
|
||||||
private TextureRegion albumArtTexture;
|
private TextureRegion albumArtTexture;
|
||||||
private boolean albumArtDisplayed, albumArtAttempted;
|
private volatile boolean offScreen, albumArtDisplayed, albumArtQueued, noReset;
|
||||||
|
|
||||||
public MusicSelectable(AudioMetadata metadata) {
|
public MusicSelectable(AudioMetadata metadata) {
|
||||||
super(skin, "selectable-button");
|
super(skin, "selectable-button");
|
||||||
@ -353,7 +355,7 @@ public class MusicSelectionPage extends Page implements Observer {
|
|||||||
actualCoords.x = getX() + getParent().getX();
|
actualCoords.x = getX() + getParent().getX();
|
||||||
actualCoords.y = getY() + getParent().getY();
|
actualCoords.y = getY() + getParent().getY();
|
||||||
|
|
||||||
if ((actualCoords.y < 0 - getHeight() - getStage().getHeight()*1.5f || actualCoords.y > getStage().getHeight()*2.5f) && selectables.getChecked() != this) {
|
if ((actualCoords.y < 0 - getHeight() - getStage().getHeight()*0.5f || actualCoords.y > getStage().getHeight()*1.5f) && selectables.getChecked() != this) {
|
||||||
offScreenAct(delta);
|
offScreenAct(delta);
|
||||||
} else {
|
} else {
|
||||||
onScreenAct(delta);
|
onScreenAct(delta);
|
||||||
@ -370,16 +372,16 @@ public class MusicSelectionPage extends Page implements Observer {
|
|||||||
if (offScreen) {
|
if (offScreen) {
|
||||||
offScreen = false;
|
offScreen = false;
|
||||||
timeSinceChanged = 0;
|
timeSinceChanged = 0;
|
||||||
} else if (timeSinceChanged < 0.075f) {
|
} else if (timeSinceChanged < 0.05f) {
|
||||||
timeSinceChanged += delta;
|
timeSinceChanged += delta;
|
||||||
} else {
|
} else {
|
||||||
if (!frameUsed && metadata.getAlbumCover() != null && !albumArtDisplayed) {
|
if (!frameUsed && metadata.getAlbumCover() != null && !albumArtDisplayed) {
|
||||||
updateAlbumArtImage(metadata.getAlbumCover());
|
updateAlbumArtImage(metadata.getAlbumCover());
|
||||||
albumArtDisplayed = true;
|
albumArtDisplayed = true;
|
||||||
frameUsed = true;
|
frameUsed = true;
|
||||||
} else if (!albumArtAttempted) {
|
} else if (!albumArtQueued) {
|
||||||
selectionLoaderThread.queue(metadata);
|
selectionLoaderThread.queue(this);
|
||||||
albumArtAttempted = true;
|
albumArtQueued = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -401,7 +403,8 @@ public class MusicSelectionPage extends Page implements Observer {
|
|||||||
updateAlbumArtImage(defaultAlbumArt);
|
updateAlbumArtImage(defaultAlbumArt);
|
||||||
metadata.unloadAlbumCover();
|
metadata.unloadAlbumCover();
|
||||||
albumArtDisplayed = false;
|
albumArtDisplayed = false;
|
||||||
albumArtAttempted = false;
|
albumArtQueued = false;
|
||||||
|
noReset = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -427,6 +430,18 @@ public class MusicSelectionPage extends Page implements Observer {
|
|||||||
public TextureRegion getAlbumArtTexture() {
|
public TextureRegion getAlbumArtTexture() {
|
||||||
return albumArtTexture;
|
return albumArtTexture;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isOffScreen() {
|
||||||
|
if (offScreen && !noReset) {
|
||||||
|
albumArtDisplayed = false;
|
||||||
|
albumArtQueued = false;
|
||||||
|
}
|
||||||
|
return offScreen;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void loadAttempted() {
|
||||||
|
noReset = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class MusicSelectableButtonGroup extends ButtonGroup<MusicSelectable> {
|
private class MusicSelectableButtonGroup extends ButtonGroup<MusicSelectable> {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user