Only call SDL_NumJoysticks() once per loop

It does non-trivial work when using sdl2-compat.
This commit is contained in:
Cameron Gutman
2024-11-12 23:52:31 -06:00
parent 707dd3cb83
commit 15e337fff8
2 changed files with 8 additions and 4 deletions

View File

@@ -55,7 +55,8 @@ void SdlGamepadKeyNavigation::enable()
SDL_FlushEvent(SDL_CONTROLLERDEVICEADDED);
// Open all currently attached game controllers
for (int i = 0; i < SDL_NumJoysticks(); i++) {
int numJoysticks = SDL_NumJoysticks();
for (int i = 0; i < numJoysticks; i++) {
if (SDL_IsGameController(i)) {
SDL_GameController* gc = SDL_GameControllerOpen(i);
if (gc != nullptr) {
@@ -289,7 +290,8 @@ int SdlGamepadKeyNavigation::getConnectedGamepads()
Q_ASSERT(m_Enabled);
int count = 0;
for (int i = 0; i < SDL_NumJoysticks(); i++) {
int numJoysticks = SDL_NumJoysticks();
for (int i = 0; i < numJoysticks; i++) {
if (SDL_IsGameController(i)) {
count++;
}