From 9c84b8268f76a1e89606e0766385584e64b7abff Mon Sep 17 00:00:00 2001 From: ferferga Date: Fri, 28 Feb 2020 17:19:03 +0100 Subject: [PATCH] Handle gamepads more gracefully based in window focus --- src/components/input/gamepadtokey.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/input/gamepadtokey.js b/src/components/input/gamepadtokey.js index bb4d0fffd6..9d80a3c27e 100644 --- a/src/components/input/gamepadtokey.js +++ b/src/components/input/gamepadtokey.js @@ -373,14 +373,14 @@ require(['apphost'], function (appHost) { } function attachGamepad(e) { - if (isGamepadConnected()) { + if (isGamepadConnected() && document.hasFocus()) { console.log("Gamepad connected! Starting input loop"); startInputLoop(); } } function dettachGamepad(e) { - if (!isGamepadConnected()) { + if (!isGamepadConnected() || !document.hasFocus()) { console.log("Gamepad disconnected! No other gamepads are connected, stopping input loop"); stopInputLoop(); } else { @@ -391,6 +391,8 @@ require(['apphost'], function (appHost) { // Event Listeners for any change in gamepads' state. window.addEventListener("gamepaddisconnected", dettachGamepad); window.addEventListener("gamepadconnected", attachGamepad); + window.addEventListener("blur", dettachGamepad); + window.addEventListener("focus", attachGamepad); // The gamepadInputEmulation is a string property that exists in JavaScript UWAs and in WebViews in UWAs. // It won't exist in Win8.1 style apps or browsers.