From 7ea7f783e90ccaffe24b454382fea145f4df64f1 Mon Sep 17 00:00:00 2001 From: XProger Date: Thu, 16 Mar 2017 18:44:41 +0300 Subject: [PATCH] #15 fix active gamepad detection --- src/platform/web/main.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/platform/web/main.cpp b/src/platform/web/main.cpp index 08cf0e5..8f93e79 100644 --- a/src/platform/web/main.cpp +++ b/src/platform/web/main.cpp @@ -3,7 +3,7 @@ #include "game.h" -int lastTime; +int lastTime, lastJoy = -1; EGLDisplay display; EGLSurface surface; EGLContext context; @@ -65,11 +65,14 @@ void joyUpdate() { return; EmscriptenGamepadEvent state; - for (int i = 0; i < count; i++) - if (emscripten_get_gamepad_status(i, &state) == EMSCRIPTEN_RESULT_SUCCESS && state.numButtons >= 12) - break; + if (lastJoy == -1 || emscripten_get_gamepad_status(lastJoy, &state) != EMSCRIPTEN_RESULT_SUCCESS) + for (int i = 0; i < count; i++) + if (i != lastJoy && emscripten_get_gamepad_status(i, &state) == EMSCRIPTEN_RESULT_SUCCESS && state.numButtons >= 12) { + lastJoy = i; + break; + } - if (state.numButtons < 12) + if (lastJoy == -1) return; for (int i = 0; i < max(state.numButtons, 12); i++) {