v1.4.2: fixed rare race condition crashes with animation callbacks

This commit is contained in:
Evan Debenham
2022-10-24 17:52:23 -04:00
parent b98a40eb05
commit 39ac31f145
2 changed files with 8 additions and 11 deletions
@@ -245,33 +245,30 @@ public class CharSprite extends MovieClip implements Tweener.Listener, MovieClip
} }
public void attack( int cell ) { public void attack( int cell ) {
turnTo( ch.pos, cell ); attack( cell, null );
play( attack );
} }
public void attack( int cell, Callback callback ) { public synchronized void attack( int cell, Callback callback ) {
animCallback = callback; animCallback = callback;
turnTo( ch.pos, cell ); turnTo( ch.pos, cell );
play( attack ); play( attack );
} }
public void operate( int cell ) { public void operate( int cell ) {
turnTo( ch.pos, cell ); operate( cell, null );
play( operate );
} }
public void operate( int cell, Callback callback ) { public synchronized void operate( int cell, Callback callback ) {
animCallback = callback; animCallback = callback;
turnTo( ch.pos, cell ); turnTo( ch.pos, cell );
play( operate ); play( operate );
} }
public void zap( int cell ) { public void zap( int cell ) {
turnTo( ch.pos, cell ); zap( cell, null );
play( zap );
} }
public void zap( int cell, Callback callback ) { public synchronized void zap( int cell, Callback callback ) {
animCallback = callback; animCallback = callback;
zap( cell ); zap( cell );
} }
@@ -732,7 +729,7 @@ public class CharSprite extends MovieClip implements Tweener.Listener, MovieClip
} }
@Override @Override
public void onComplete( Animation anim ) { public synchronized void onComplete( Animation anim ) {
if (animCallback != null) { if (animCallback != null) {
Callback executing = animCallback; Callback executing = animCallback;
@@ -124,7 +124,7 @@ public class HeroSprite extends CharSprite {
play( fly ); play( fly );
} }
public void read() { public synchronized void read() {
animCallback = new Callback() { animCallback = new Callback() {
@Override @Override
public void call() { public void call() {