/analyze warning fixes for GameInput usage

This commit is contained in:
Chuck Walbourn 2020-11-10 21:20:59 -08:00
Родитель 2fbb033468
Коммит f57c22d815
4 изменённых файлов: 16 добавлений и 14 удалений

Просмотреть файл

@ -284,7 +284,8 @@ namespace DirectX
#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_GAMES) #if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_GAMES)
// Underlying device access // Underlying device access
void __cdecl GetDevice(int player, _Outptr_ IGameInputDevice** device) noexcept; _Success_(return != false)
bool __cdecl GetDevice(int player, _Outptr_ IGameInputDevice** device) noexcept;
#endif #endif
// Singleton // Singleton

Просмотреть файл

@ -129,10 +129,9 @@ public:
{ {
if (mGameInput) if (mGameInput)
{ {
HRESULT hr = mGameInput->UnregisterCallback(mDeviceToken, UINT64_MAX); if (!mGameInput->UnregisterCallback(mDeviceToken, UINT64_MAX))
if (FAILED(hr))
{ {
DebugTrace("ERROR: GameInput::UnregisterCallback [gamepad] failed (%08X)", static_cast<unsigned int>(hr)); DebugTrace("ERROR: GameInput::UnregisterCallback [gamepad] failed");
} }
} }
@ -289,10 +288,11 @@ public:
} }
} }
void GetDevice(int player, _Outptr_ IGameInputDevice** device) noexcept _Success_(return != false)
bool GetDevice(int player, _Outptr_ IGameInputDevice** device) noexcept
{ {
if (!device) if (!device)
return; return false;
if (player == c_MostRecent) if (player == c_MostRecent)
player = mMostRecentGamepad; player = mMostRecentGamepad;
@ -306,8 +306,11 @@ public:
{ {
dev->AddRef(); dev->AddRef();
*device = dev; *device = dev;
return true;
} }
} }
return false;
} }
GamePad* mOwner; GamePad* mOwner;
@ -1648,9 +1651,9 @@ void GamePad::RegisterEvents(HANDLE ctrlChanged) noexcept
pImpl->mCtrlChanged = (!ctrlChanged) ? INVALID_HANDLE_VALUE : ctrlChanged; pImpl->mCtrlChanged = (!ctrlChanged) ? INVALID_HANDLE_VALUE : ctrlChanged;
} }
void GamePad::GetDevice(int player, _Outptr_ IGameInputDevice** device) noexcept bool GamePad::GetDevice(int player, _Outptr_ IGameInputDevice** device) noexcept
{ {
pImpl->GetDevice(player, device); return pImpl->GetDevice(player, device);
} }
#elif ((_WIN32_WINNT >= _WIN32_WINNT_WIN10) && !defined(_GAMING_DESKTOP)) || defined(_XBOX_ONE) #elif ((_WIN32_WINNT >= _WIN32_WINNT_WIN10) && !defined(_GAMING_DESKTOP)) || defined(_XBOX_ONE)
void GamePad::RegisterEvents(HANDLE ctrlChanged, HANDLE userChanged) noexcept void GamePad::RegisterEvents(HANDLE ctrlChanged, HANDLE userChanged) noexcept

Просмотреть файл

@ -96,10 +96,9 @@ public:
{ {
if (mGameInput) if (mGameInput)
{ {
HRESULT hr = mGameInput->UnregisterCallback(mDeviceToken, UINT64_MAX); if (!mGameInput->UnregisterCallback(mDeviceToken, UINT64_MAX))
if (FAILED(hr))
{ {
DebugTrace("ERROR: GameInput::UnregisterCallback [keyboard] failed (%08X)", static_cast<unsigned int>(hr)); DebugTrace("ERROR: GameInput::UnregisterCallback [keyboard] failed");
} }
} }

Просмотреть файл

@ -102,10 +102,9 @@ public:
{ {
if (mGameInput) if (mGameInput)
{ {
HRESULT hr = mGameInput->UnregisterCallback(mDeviceToken, UINT64_MAX); if (!mGameInput->UnregisterCallback(mDeviceToken, UINT64_MAX))
if (FAILED(hr))
{ {
DebugTrace("ERROR: GameInput::UnregisterCallback [mouse] failed (%08X)", static_cast<unsigned int>(hr)); DebugTrace("ERROR: GameInput::UnregisterCallback [mouse] failed");
} }
} }