void InputDaemon::refreshJoysticks() { QMapIterator<SDL_JoystickID, InputDevice*> iter(*joysticks); while (iter.hasNext()) { InputDevice *joystick = iter.next().value(); if (joystick) { delete joystick; joystick = 0; } } joysticks->clear(); #ifdef USE_SDL_2 trackjoysticks.clear(); trackcontrollers.clear(); #endif #ifdef USE_SDL_2 settings->getLock()->lock(); settings->beginGroup("Mappings"); #endif for (int i=0; i < SDL_NumJoysticks(); i++) { #ifdef USE_SDL_2 SDL_Joystick *joystick = SDL_JoystickOpen(i); QString temp; SDL_JoystickGUID tempGUID = SDL_JoystickGetGUID(joystick); char guidString[65] = {'0'}; SDL_JoystickGetGUIDString(tempGUID, guidString, sizeof(guidString)); temp = QString(guidString); bool disableGameController = settings->value(QString("%1Disable").arg(temp), false).toBool(); if (SDL_IsGameController(i) && !disableGameController) { SDL_GameController *controller = SDL_GameControllerOpen(i); GameController *damncontroller = new GameController(controller, i, settings, this); connect(damncontroller, SIGNAL(requestWait()), eventWorker, SLOT(haltServices())); SDL_Joystick *sdlStick = SDL_GameControllerGetJoystick(controller); SDL_JoystickID joystickID = SDL_JoystickInstanceID(sdlStick); joysticks->insert(joystickID, damncontroller); trackcontrollers.insert(joystickID, damncontroller); } else { Joystick *curJoystick = new Joystick(joystick, i, settings, this); connect(curJoystick, SIGNAL(requestWait()), eventWorker, SLOT(haltServices())); SDL_JoystickID joystickID = SDL_JoystickInstanceID(joystick); joysticks->insert(joystickID, curJoystick); trackjoysticks.insert(joystickID, curJoystick); } #else SDL_Joystick *joystick = SDL_JoystickOpen(i); Joystick *curJoystick = new Joystick(joystick, i, settings, this); connect(curJoystick, SIGNAL(requestWait()), eventWorker, SLOT(haltServices())); joysticks->insert(i, curJoystick); #endif } #ifdef USE_SDL_2 settings->endGroup(); settings->getLock()->unlock(); #endif emit joysticksRefreshed(joysticks); }
void InputDaemon::refreshJoysticks() { #ifdef USE_SDL_2 QHashIterator<SDL_JoystickID, InputDevice*> iter(*joysticks); #else QHashIterator<int, InputDevice*> iter(*joysticks); #endif while (iter.hasNext()) { InputDevice *joystick = iter.next().value(); if (joystick) { delete joystick; joystick = 0; } } joysticks->clear(); #ifdef USE_SDL_2 trackjoysticks.clear(); trackcontrollers.clear(); #endif #ifdef USE_SDL_2 QSettings settings(PadderCommon::configFilePath, QSettings::IniFormat); settings.beginGroup("Mappings"); #endif for (int i=0; i < SDL_NumJoysticks(); i++) { #ifdef USE_SDL_2 SDL_Joystick *joystick = SDL_JoystickOpen(i); QString temp; SDL_JoystickGUID tempGUID = SDL_JoystickGetGUID(joystick); char guidString[65] = {'0'}; SDL_JoystickGetGUIDString(tempGUID, guidString, sizeof(guidString)); temp = QString(guidString); bool disableGameController = settings.value(QString("%1Disable").arg(temp), false).toBool(); if (SDL_IsGameController(i) && !disableGameController) { SDL_GameController *controller = SDL_GameControllerOpen(i); GameController *damncontroller = new GameController(controller, i, this); SDL_Joystick *sdlStick = SDL_GameControllerGetJoystick(controller); SDL_JoystickID joystickID = SDL_JoystickInstanceID(sdlStick); joysticks->insert(joystickID, damncontroller); trackcontrollers.insert(joystickID, damncontroller); } else { Joystick *curJoystick = new Joystick(joystick, i, this); SDL_JoystickID joystickID = SDL_JoystickInstanceID(joystick); joysticks->insert(joystickID, curJoystick); trackjoysticks.insert(joystickID, curJoystick); } #else SDL_Joystick *joystick = SDL_JoystickOpen(i); Joystick *curJoystick = new Joystick(joystick, i, this); joysticks->insert(i, curJoystick); #endif } #ifdef USE_SDL_2 settings.endGroup(); #endif emit joysticksRefreshed(joysticks); }