Hi,
The joystick state does not seem to get updated properly on Windows.
According to the tutorial, "Joystick states are automatically updated when you check for events”, which I assume means that they got updated when the window is polling events. Doc on sfJoystick_update as well as the official sfml joystick example also work as suggested.
However when testing the following code with CSFML 2.5, calls to sfJoystick_isConnected always return false, unless I manually update the joystick state before the calls.
sfRenderWindow* window = sfRenderWindow_create(mode, "joystick test", sfClose, NULL);
printf("Before polling:\n");
for (int i = 0; i < sfJoystickCount; ++i) {
// sfJoystick_update();
sfBool connected = sfJoystick_isConnected(i);
printf("%d: %d\n", i, connected);
}
printf("Polling starts:\n");
while(sfRenderWindow_isOpen(window)) {
sfEvent evt;
while(sfRenderWindow_pollEvent(window, &evt)) {
//sfJoystick_update();
if (evt.type == sfEvtClosed) {
sfRenderWindow_close(window);
break;
}
else if (evt.type == sfEvtJoystickMoved) {
//sfJoystick_update();
unsigned int id = evt.joystickMove.joystickId;
printf("%d: %d\n", id, sfJoystick_isConnected(id));
}
}
}
I am building the above code with CSFML 2.5 64bit, mingw gcc 8.1 on windows 7. The joystick used is a compatible XBOX controller.
Similar code in c++ with SFML 2.5.1 runs without issue, however.
I also tested the code on mac and it worked as intended, so I'd suspect it's a windows only issue?
EDIT: Ok here is the funny part... when I changed window to regular sfWindow (instead of sfRenderWindow) I got the expected behavior.
Any insights would be appreciated.
Hi,
The joystick state does not seem to get updated properly on Windows.
According to the tutorial, "Joystick states are automatically updated when you check for events”, which I assume means that they got updated when the window is polling events. Doc on
sfJoystick_updateas well as the official sfml joystick example also work as suggested.However when testing the following code with CSFML 2.5, calls to
sfJoystick_isConnectedalways return false, unless I manually update the joystick state before the calls.I am building the above code with CSFML 2.5 64bit, mingw gcc 8.1 on windows 7. The joystick used is a compatible XBOX controller.
Similar code in c++ with SFML 2.5.1 runs without issue, however.
I also tested the code on mac and it worked as intended, so I'd suspect it's a windows only issue?
EDIT: Ok here is the funny part... when I changed window to regular
sfWindow(instead ofsfRenderWindow) I got the expected behavior.Any insights would be appreciated.