Prevent more than one concurrent trackDimensionChanges from running

This commit is contained in:
Tamius Han 2025-04-15 19:23:42 +02:00
parent ff0de6f2e7
commit 39f39f23a7

View File

@ -103,6 +103,8 @@ class PlayerData {
private ui: UI;
private _isTrackDimensionChangesActive: boolean = false;
elementStack: ElementStack = [] as ElementStack;
//#endregion
@ -371,6 +373,15 @@ class PlayerData {
*
*/
trackDimensionChanges() {
if (this._isTrackDimensionChangesActive) {
// this shouldn't really get called, _ever_ ... but sometimes it happens
console.warn('[PlayerData::trackDimensionChanges] trackDimensionChanges is already active!');
return;
}
this._isTrackDimensionChangesActive = true;
try {
// get player dimensions _once_
let currentPlayerDimensions;
this.isFullscreen = !!document.fullscreenElement;
@ -404,6 +415,7 @@ class PlayerData {
this.eventBus.send('restore-ar', null);
this.eventBus.send('delayed-restore-ar', {delay: 500});
this.dimensions = currentPlayerDimensions;
this._isTrackDimensionChangesActive = false;
return;
}
@ -414,6 +426,11 @@ class PlayerData {
// Save current dimensions to avoid triggering this function pointlessly
this.dimensions = currentPlayerDimensions;
} catch (e) {
}
this._isTrackDimensionChangesActive = false;
}