diff --git a/Src/Keyboard.cpp b/Src/Keyboard.cpp index 95d6ce0..e183877 100644 --- a/Src/Keyboard.cpp +++ b/Src/Keyboard.cpp @@ -191,15 +191,18 @@ private: _In_ IGameInputDevice *, _In_ uint64_t, _In_ GameInputDeviceStatus currentStatus, - _In_ GameInputDeviceStatus) noexcept + _In_ GameInputDeviceStatus previousStatus) noexcept { auto impl = reinterpret_cast(context); - if (currentStatus & GameInputDeviceConnected) + const bool wasConnected = (previousStatus & GameInputDeviceConnected) != 0; + const bool isConnected = (currentStatus & GameInputDeviceConnected) != 0; + + if (isConnected && !wasConnected) { ++impl->mConnected; } - else if (impl->mConnected > 0) + else if (!isConnected && wasConnected && impl->mConnected > 0) { --impl->mConnected; } diff --git a/Src/Mouse.cpp b/Src/Mouse.cpp index c38625f..315a3ce 100644 --- a/Src/Mouse.cpp +++ b/Src/Mouse.cpp @@ -320,15 +320,18 @@ private: _In_ IGameInputDevice *, _In_ uint64_t, _In_ GameInputDeviceStatus currentStatus, - _In_ GameInputDeviceStatus) noexcept + _In_ GameInputDeviceStatus previousStatus) noexcept { auto impl = reinterpret_cast(context); - if (currentStatus & GameInputDeviceConnected) + const bool wasConnected = (previousStatus & GameInputDeviceConnected) != 0; + const bool isConnected = (currentStatus & GameInputDeviceConnected) != 0; + + if (isConnected && !wasConnected) { ++impl->mConnected; } - else if (impl->mConnected > 0) + else if (!isConnected && wasConnected && impl->mConnected > 0) { --impl->mConnected; } -- 2.49.0.vfs.0.0