From 20f86fafa47a3b9b114307098dd85e02a2f06c38 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Wed, 11 Dec 2019 19:52:18 -0800 Subject: [PATCH] avoid double rwlock --- nx/source/services/hid.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/nx/source/services/hid.c b/nx/source/services/hid.c index bf20d173..8654a769 100644 --- a/nx/source/services/hid.c +++ b/nx/source/services/hid.c @@ -432,7 +432,7 @@ u64 hidKeysAllDown() { rwlockReadLock(&g_hidLock); for (u8 controller=0; controller<10; controller++) { - if (hidIsControllerConnected(controller)) kDown |= g_controllerDown[controller]; + if ((g_controllerEntries[controller].connectionState & CONTROLLER_STATE_CONNECTED) != 0) kDown |= g_controllerDown[controller]; } rwlockReadUnlock(&g_hidLock); @@ -444,7 +444,7 @@ u64 hidKeysAllUp() { rwlockReadLock(&g_hidLock); for (u8 controller=0; controller<10; controller++) { - if (hidIsControllerConnected(controller)) kUp |= g_controllerUp[controller]; + if ((g_controllerEntries[controller].connectionState & CONTROLLER_STATE_CONNECTED) != 0) kUp |= g_controllerUp[controller]; } rwlockReadUnlock(&g_hidLock); @@ -456,7 +456,7 @@ u64 hidKeysAllHeld() { rwlockReadLock(&g_hidLock); for (u8 controller=0; controller<10; controller++) { - if (hidIsControllerConnected(controller)) kHeld |= g_controllerHeld[controller]; + if ((g_controllerEntries[controller].connectionState & CONTROLLER_STATE_CONNECTED) != 0) kHeld |= g_controllerHeld[controller]; } rwlockReadUnlock(&g_hidLock); @@ -465,10 +465,13 @@ u64 hidKeysAllHeld() { u32 hidGetControllerCount() { u32 count = 0; - + + rwlockReadlock(&g_hidLock); for (u32 controller=0; controller<10; controller++) { - if (hidIsControllerConnected(controller)) count++; + if ((g_controllerEntries[controller].connectionState & CONTROLLER_STATE_CONNECTED) != 0) count++; } + rwlockReadUnlock(&g_hidLock); + return count; }