attempt at fixing multi threading issue

This commit is contained in:
Harrison Deng 2017-08-17 00:49:07 -05:00
parent 569af8adf9
commit 7cdb372de2
3 changed files with 7 additions and 7 deletions

View File

@ -10,6 +10,7 @@ import org.jaudiotagger.tag.TagException;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.audio.Music; import com.badlogic.gdx.audio.Music;
import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.utils.GdxRuntimeException; import com.badlogic.gdx.utils.GdxRuntimeException;
import javazoom.jl.decoder.Bitstream; import javazoom.jl.decoder.Bitstream;
@ -39,7 +40,7 @@ public class Mp3AudioData implements AudioData {
public Mp3AudioData(FileHandle audioFile) { public Mp3AudioData(FileHandle audioFile) {
try { try {
MP3File mp3File = new MP3File(audioFile.file()); MP3File mp3File = new MP3File(audioFile.file());
sampleCount = (long) (mp3File.getMP3AudioHeader().getPreciseTrackLength()*mp3File.getMP3AudioHeader().getSampleRateAsNumber()) + 2; //TODO figure out why this is correct since this way of calc was discovered by testing. sampleCount = MathUtils.round((float) (mp3File.getAudioHeader().getSampleRateAsNumber()*mp3File.getMP3AudioHeader().getPreciseTrackLength()));
durationInSeconds = mp3File.getMP3AudioHeader().getNumberOfFrames()/readWindowSize; durationInSeconds = mp3File.getMP3AudioHeader().getNumberOfFrames()/readWindowSize;
sampleRate = mp3File.getMP3AudioHeader().getSampleRateAsNumber(); sampleRate = mp3File.getMP3AudioHeader().getSampleRateAsNumber();
} catch (IOException | TagException | ReadOnlyFileException | InvalidAudioFrameException e) { } catch (IOException | TagException | ReadOnlyFileException | InvalidAudioFrameException e) {

View File

@ -34,7 +34,7 @@ public class AnalyzePage extends Page implements MiniListener {
AudioData music; AudioData music;
RhythmMapAlgorithm mapGenAlgorithm; RhythmMapAlgorithm mapGenAlgorithm;
private Table songInfo; private volatile Table songInfo;
private volatile Label[] info; private volatile Label[] info;
Table difficultyTable; Table difficultyTable;
@ -239,12 +239,12 @@ public class AnalyzePage extends Page implements MiniListener {
} }
@Override @Override
public void handle(MiniEvents ID) { public synchronized void handle(MiniEvents ID) {
switch (ID) { switch (ID) {
case ANALYZER_ITERATED: case ANALYZER_ITERATED:
if (audioAnalyzer.getProgress() == 50) { if (audioAnalyzer.getProgress() == 50) {
songInfo.addAction(Actions.moveTo(songInfo.getX(), getHeight()/2f, 0.75f, Interpolation.linear)); songInfo.addAction(Actions.moveTo(songInfo.getX(), getHeight()/2f, 0.75f, Interpolation.linear));
difficultyTable.addAction(Actions.moveTo(songInfo.getX(), songInfo.getY()-difficultyTable.getHeight(),0.8f, Interpolation.linear)); difficultyTable.addAction(Actions.moveTo(songInfo.getX(), getHeight()/2f-difficultyTable.getHeight()-10,0.8f, Interpolation.linear));
info[2].setText("Awaiting confirmation..."); info[2].setText("Awaiting confirmation...");
info[2].addAction(Actions.color(Color.BLACK, 0.75f)); info[2].addAction(Actions.color(Color.BLACK, 0.75f));
confirmDiffButton.setDisabled(false); confirmDiffButton.setDisabled(false);

View File

@ -120,7 +120,7 @@ public class GameHUD extends Stage {
setScore(sm.getScore()); setScore(sm.getScore());
} }
try { if (gpa.getAudioMap() != null && gpa.getAudioMap().getHudType().length > gpa.getAudioMap().getIndex()) {
if (gpa.getAudioMap() != null && gpa.getAudioMap().getHudType()[gpa.getAudioMap().getIndex()] != 0) { if (gpa.getAudioMap() != null && gpa.getAudioMap().getHudType()[gpa.getAudioMap().getIndex()] != 0) {
switch (gpa.getAudioMap().getHudType()[gpa.getAudioMap().getIndex()]) { switch (gpa.getAudioMap().getHudType()[gpa.getAudioMap().getIndex()]) {
case 1: case 1:
@ -130,9 +130,8 @@ public class GameHUD extends Stage {
changeStatusColor(um, 0.2f, original); changeStatusColor(um, 0.2f, original);
} }
} }
} catch (ArrayIndexOutOfBoundsException e) {
Gdx.app.debug("GameHUD", "reached end of status data.");
} }
super.act(delta); super.act(delta);
} }