Skip to content

Commit c5750ab

Browse files
Change the way GameInput callbacks are handled for mouse/keyboard (#553)
1 parent f9f6ea4 commit c5750ab

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

Src/Keyboard.cpp

+6-3
Original file line numberDiff line numberDiff line change
@@ -191,15 +191,18 @@ class Keyboard::Impl
191191
_In_ IGameInputDevice *,
192192
_In_ uint64_t,
193193
_In_ GameInputDeviceStatus currentStatus,
194-
_In_ GameInputDeviceStatus) noexcept
194+
_In_ GameInputDeviceStatus previousStatus) noexcept
195195
{
196196
auto impl = reinterpret_cast<Keyboard::Impl*>(context);
197197

198-
if (currentStatus & GameInputDeviceConnected)
198+
const bool wasConnected = (previousStatus & GameInputDeviceConnected) != 0;
199+
const bool isConnected = (currentStatus & GameInputDeviceConnected) != 0;
200+
201+
if (isConnected && !wasConnected)
199202
{
200203
++impl->mConnected;
201204
}
202-
else if (impl->mConnected > 0)
205+
else if (!isConnected && wasConnected && impl->mConnected > 0)
203206
{
204207
--impl->mConnected;
205208
}

Src/Mouse.cpp

+6-3
Original file line numberDiff line numberDiff line change
@@ -320,15 +320,18 @@ class Mouse::Impl
320320
_In_ IGameInputDevice *,
321321
_In_ uint64_t,
322322
_In_ GameInputDeviceStatus currentStatus,
323-
_In_ GameInputDeviceStatus) noexcept
323+
_In_ GameInputDeviceStatus previousStatus) noexcept
324324
{
325325
auto impl = reinterpret_cast<Mouse::Impl*>(context);
326326

327-
if (currentStatus & GameInputDeviceConnected)
327+
const bool wasConnected = (previousStatus & GameInputDeviceConnected) != 0;
328+
const bool isConnected = (currentStatus & GameInputDeviceConnected) != 0;
329+
330+
if (isConnected && !wasConnected)
328331
{
329332
++impl->mConnected;
330333
}
331-
else if (impl->mConnected > 0)
334+
else if (!isConnected && wasConnected && impl->mConnected > 0)
332335
{
333336
--impl->mConnected;
334337
}

0 commit comments

Comments
 (0)