From a744381f33c2af01a68be66b826647fea9ba8cfb Mon Sep 17 00:00:00 2001 From: Hannes Muurinen Date: Tue, 7 Mar 2023 13:28:56 +0200 Subject: [PATCH 1/4] clearTimeout, not clearInterval --- Frontend/library/src/AFK/AFKController.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Frontend/library/src/AFK/AFKController.ts b/Frontend/library/src/AFK/AFKController.ts index 78da0925..f339de70 100644 --- a/Frontend/library/src/AFK/AFKController.ts +++ b/Frontend/library/src/AFK/AFKController.ts @@ -76,7 +76,7 @@ export class AFKController { stopAfkWarningTimer() { this.active = false; this.countdownActive = false; - clearInterval(this.warnTimer); + clearTimeout(this.warnTimer); clearInterval(this.countDownTimer); } From 45564b1b9bca2338493287461f8e71b8fa0d5826 Mon Sep 17 00:00:00 2001 From: Hannes Muurinen Date: Tue, 7 Mar 2023 13:29:50 +0200 Subject: [PATCH 2/4] exit pointer lock when cleaning up locked mouse handler --- Frontend/library/src/Inputs/MouseController.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Frontend/library/src/Inputs/MouseController.ts b/Frontend/library/src/Inputs/MouseController.ts index 611d770d..d3779fc7 100644 --- a/Frontend/library/src/Inputs/MouseController.ts +++ b/Frontend/library/src/Inputs/MouseController.ts @@ -134,6 +134,15 @@ export class MouseController { this.mouseEventListenerTracker.addUnregisterCallback( () => lockedMouseEvents.unregisterMouseEvents() ); + this.mouseEventListenerTracker.addUnregisterCallback(() => { + if ( + document.exitPointerLock && + (document.pointerLockElement === videoElementParent || + document.mozPointerLockElement === videoElementParent) + ) { + document.exitPointerLock(); + } + }); } /** From e18ba37e5b18a4a397adc5027339bbca2c196201 Mon Sep 17 00:00:00 2001 From: Hannes Muurinen Date: Tue, 7 Mar 2023 13:30:17 +0200 Subject: [PATCH 3/4] unregister user input event handlers on disconnect --- Frontend/library/src/WebRtcPlayer/WebRtcPlayerController.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Frontend/library/src/WebRtcPlayer/WebRtcPlayerController.ts b/Frontend/library/src/WebRtcPlayer/WebRtcPlayerController.ts index 1d13e2c1..b29a53bc 100644 --- a/Frontend/library/src/WebRtcPlayer/WebRtcPlayerController.ts +++ b/Frontend/library/src/WebRtcPlayer/WebRtcPlayerController.ts @@ -209,6 +209,12 @@ export class WebRtcPlayerController { if (this.statsTimerHandle && this.statsTimerHandle !== undefined) { window.clearInterval(this.statsTimerHandle); } + + // unregister all input device event handlers on disconnect + this.setTouchInputEnabled(false); + this.setMouseInputEnabled(false); + this.setKeyboardInputEnabled(false); + this.setGamePadInputEnabled(false); }); // set up the final webRtc player controller methods from within our application so a connection can be activated From 684ab66b82ebb6d0be1dabfeecd039e436f2c8bc Mon Sep 17 00:00:00 2001 From: Hannes Muurinen Date: Tue, 7 Mar 2023 15:59:11 +0200 Subject: [PATCH 4/4] add null checks to not fail if calling disconnect before connect --- Frontend/library/src/WebRtcPlayer/WebRtcPlayerController.ts | 4 ++-- Frontend/library/src/WebSockets/WebSocketController.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Frontend/library/src/WebRtcPlayer/WebRtcPlayerController.ts b/Frontend/library/src/WebRtcPlayer/WebRtcPlayerController.ts index b29a53bc..7c410be5 100644 --- a/Frontend/library/src/WebRtcPlayer/WebRtcPlayerController.ts +++ b/Frontend/library/src/WebRtcPlayer/WebRtcPlayerController.ts @@ -1520,14 +1520,14 @@ export class WebRtcPlayerController { * Close the Connection to the signaling server */ closeSignalingServer() { - this.webSocketController.close(); + this.webSocketController?.close(); } /** * Close the peer connection */ closePeerConnection() { - this.peerConnectionController.close(); + this.peerConnectionController?.close(); } /** diff --git a/Frontend/library/src/WebSockets/WebSocketController.ts b/Frontend/library/src/WebSockets/WebSocketController.ts index d62b24ba..ddb64fcc 100644 --- a/Frontend/library/src/WebSockets/WebSocketController.ts +++ b/Frontend/library/src/WebSockets/WebSocketController.ts @@ -201,7 +201,7 @@ export class WebSocketController { * Closes the Websocket connection */ close() { - this.webSocket.close(); + this.webSocket?.close(); } /** Event used for Displaying websocket closed messages */