v0.7.4c: fixed various rare crash bugs

This commit is contained in:
Evan Debenham
2019-08-11 16:01:11 -04:00
parent f3909c0b2e
commit 8b4b241f8a
5 changed files with 36 additions and 21 deletions

View File

@@ -189,8 +189,8 @@ public class Tilemap extends Visual {
}
private int camX, camY, camW, camH;
private int topLeft, bottomRight, length;
//private int camX, camY, camW, camH;
//private int topLeft, bottomRight, length;
@Override
public void draw() {
@@ -214,8 +214,9 @@ public class Tilemap extends Visual {
topLeftUpdating = -1;
updating.setEmpty();
}
Camera c = Camera.main;
//FIXME temporarily disabled this optimization as it is suspected to cause crashes
/*Camera c = Camera.main;
//we treat the position of the tilemap as (0,0) here
camX = (int)(c.scroll.x/cellW - x/cellW);
camY = (int)(c.scroll.y/cellH - y/cellH);
@@ -242,7 +243,7 @@ public class Tilemap extends Visual {
length = bottomRight - topLeft + 1;
if (length <= 0)
return;
return;*/
NoosaScript script = NoosaScriptNoLighting.get();
@@ -252,7 +253,7 @@ public class Tilemap extends Visual {
script.camera( camera );
script.drawQuadSet( buffer, length, topLeft );
script.drawQuadSet( buffer, size, 0 );
}

View File

@@ -35,7 +35,7 @@ public enum Music {
private boolean enabled = true;
private float volume = 1f;
public void play( String assetName, boolean looping ) {
public synchronized void play( String assetName, boolean looping ) {
if (isPlaying() && lastPlayed != null && lastPlayed.equals( assetName )) {
return;
@@ -57,25 +57,25 @@ public enum Music {
}
public void mute() {
public synchronized void mute() {
lastPlayed = null;
stop();
}
public void pause() {
public synchronized void pause() {
if (player != null) {
player.pause();
}
}
public void resume() {
public synchronized void resume() {
if (player != null) {
player.play();
player.setLooping(looping);
}
}
public void stop() {
public synchronized void stop() {
if (player != null) {
player.stop();
player.dispose();
@@ -83,18 +83,18 @@ public enum Music {
}
}
public void volume( float value ) {
public synchronized void volume( float value ) {
volume = value;
if (player != null) {
player.setVolume( value );
}
}
public boolean isPlaying() {
public synchronized boolean isPlaying() {
return player != null && player.isPlaying();
}
public void enable( boolean value ) {
public synchronized void enable( boolean value ) {
enabled = value;
if (isPlaying() && !value) {
stop();
@@ -104,7 +104,7 @@ public enum Music {
}
}
public boolean isEnabled() {
public synchronized boolean isEnabled() {
return enabled;
}

View File

@@ -150,6 +150,9 @@ public class Bundle {
} catch (JSONException e) {
Game.reportException(e);
return enumClass.getEnumConstants()[0];
} catch (IllegalArgumentException e) {
Game.reportException(e);
return enumClass.getEnumConstants()[0];
}
}