StackOverflow at react.Cons.insert

3 views
Skip to first unread message

Andres Q

unread,
May 4, 2020, 10:05:38 AM5/4/20
to pl...@googlegroups.com
Hi,

I'm seeing this error happen on the users:

java.lang.StackOverflowError
at react.Cons.insert(Cons.java:106)
......
at react.Cons.insert(Cons.java:106)
at react.Reactor$1.run(Reactor.java:51)
at react.Reactor.notify(Reactor.java:155)
at react.AbstractSignal.notifyEmit(AbstractSignal.java:82)
at react.Signal.emit(Signal.java:25)
at react.Signal$1.onEmit(Signal.java:35)
at react.AbstractSignal$4.notify(AbstractSignal.java:87)
at react.Reactor.notify(Reactor.java:139)
at react.AbstractSignal.notifyEmit(AbstractSignal.java:82)
at react.Signal.emit(Signal.java:25)
at playn.core.Game.paint(Game.java:73)
at playn.core.Game.onFrame(Game.java:97)
at playn.core.Game.access$000(Game.java:34)
at playn.core.Game$1.onEmit(Game.java:56)
at playn.core.Game$1.onEmit(Game.java:55)
at react.AbstractSignal$4.notify(AbstractSignal.java:87)
at react.Reactor.notify(Reactor.java:139)
at react.AbstractSignal.notifyEmit(AbstractSignal.java:82)
at react.Signal.emit(Signal.java:25)
at playn.core.Platform.emitFrame(Platform.java:124)
at playn.android.AndroidPlatform.processFrame(AndroidPlatform.java:98)
at playn.android.GameViewGL$1.onDrawFrame(GameViewGL.java:52)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1538)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1255)

I'm using the platform's frame signal in my main game screen to drive a timer, like this:

   public void wasAdded() {
      game().plat.frame.connect(timer);
   }

   public void wasRemoved() {
      game().plat.frame.disconnect(timer);
   }

The timer is set up to fire once per second:

timer.every(1000, () -> updateTimer());

Am I doing something wrong? It seems like there is some kind of race condition so that the listeners of the frame signal end up in an infinite loop sometimes. Any hints?

Thanks,

Andrés
Reply all
Reply to author
Forward
0 new messages