Try to lock interface while it is already locked !

Game development with Board Game Arena Studio
Post Reply
User avatar
Lymon Flowers
Posts: 196
Joined: 01 April 2020, 21:14

Try to lock interface while it is already locked !

Post by Lymon Flowers »

When going through a replay of my game (Downforce), I regularly get error messages in the javascript console and the interface blocks untill I click on the "next move". The error message is: Try to lock interface while it is already locked !

It happens at distinct places like move like move #137 of table https://boardgamearena.com/table?table=92381834

My guess: the onEnteringState method of my class does ajax calls while the interface is still locked from a previous one. Any idea on this? It looks like a studio bug, but maybe I am doing something wrong.

The full error stack:

Code: Select all

Try to lock interface while it is already locked ! 3 ly_studio.js:2:652013
During notification gameStateChange
this.notifqueue[i] is undefined
ajaxcall@https://x.boardgamearena.net/data/themereleases/200527-1725/js/modules/layer/ly_studio.js:2:638508
onEnteringState@https://x.boardgamearena.net/data/themereleases/current/games/downforce/200528-0049/downforce.js:1:5434
ntf_gameStateChange@https://x.boardgamearena.net/data/themereleases/200527-1725/js/modules/layer/ly_studio.js:2:725390
hitch/<@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:33825
_269@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:60682
dojo/on/</on.emit@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:54866
dojo/on/</on.emit@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:55648
emit@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:59320
publish@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:58881
publish@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:51062
dispatchNotification@https://x.boardgamearena.net/data/themereleases/200527-1725/js/modules/layer/ly_studio.js:2:554583
dispatchNotifications@https://x.boardgamearena.net/data/themereleases/200527-1725/js/modules/layer/ly_studio.js:2:548746
onNotification@https://x.boardgamearena.net/data/themereleases/200527-1725/js/modules/layer/ly_studio.js:2:544763
sendNextArchive@https://x.boardgamearena.net/data/themereleases/200527-1725/js/modules/layer/ly_studio.js:2:662559
onEndDisplayLastArchive@https://x.boardgamearena.net/data/themereleases/200527-1725/js/modules/layer/ly_studio.js:2:668064
ntf_end_archivewaitingdelay@https://x.boardgamearena.net/data/themereleases/200527-1725/js/modules/layer/ly_studio.js:2:727726
hitch/<@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:33825
_269@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:60682
dojo/on/</on.emit@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:54866
dojo/on/</on.emit@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:55648
emit@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:59320
publish@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:58881
publish@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:51062
dispatchNotification@https://x.boardgamearena.net/data/themereleases/200527-1725/js/modules/layer/ly_studio.js:2:554583
dispatchNotifications@https://x.boardgamearena.net/data/themereleases/200527-1725/js/modules/layer/ly_studio.js:2:548746
onSynchronousNotificationEnd@https://x.boardgamearena.net/data/themereleases/200527-1725/js/modules/layer/ly_studio.js:2:564111
hitch/<@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:33825
_269@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:60682
dojo/on/</on.emit@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:54866
dojo/on/</on.emit@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:55648
emit@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:59320
publish@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:58881
publish@https://x.boardgamearena.net/data/themereleases/200527-1725/js/dojoroot/dojo/dojo.js:8:51062
endnotif@https://x.boardgamearena.net/data/themereleases/200527-1725/js/modules/layer/ly_studio.js:2:451633
@https://x.boardgamearena.net/data/themereleases/200527-1725/js/modules/layer/ly_studio.js:2:1

Excerpt of my method:

Code: Select all

onEnteringState: function( stateName, args )
{
    switch( stateName )
    {
	// [...]
	case 'moveCar':
	// [...]
	if ( movements . color == 'Joker' )
	{
	    this.ajaxcall( this.gameUrl + "chooseJokerColor.html", { lock: true }, this, function( result ) { } );
	    return;
	}
	// [...]
    }
}
User avatar
Tisaac
Posts: 2743
Joined: 26 August 2014, 21:28

Re: Try to lock interface while it is already locked !

Post by Tisaac »

Just curious : why would you need an AJAX call when entering a state ?
User avatar
Lymon Flowers
Posts: 196
Joined: 01 April 2020, 21:14

Re: Try to lock interface while it is already locked !

Post by Lymon Flowers »

I realize that what is achieved there could be much more efficiently done server-side, maybe that is the answer :mrgreen:
User avatar
Benoit314
Posts: 82
Joined: 02 April 2020, 22:12

Re: Try to lock interface while it is already locked !

Post by Benoit314 »

Yes, I would think that a request sent to the server without any user input would be better entirely on the server-side.

That could be why you got that error, because maybe (I'm just assuming) the interface is locked when buttons are updating and get unlocked only after.
Post Reply

Return to “Developers”