X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fgui%2Fprofile.cpp;h=5f1ca13035be6d23b1e2202ff99b83ff10f1bb7a;hb=d207b11e613703aff7d00191c4595b7359f29700;hp=114b98c9059cb59e520a08fb87de1c2897a9286f;hpb=62587015fb12ec54b1702bfa17077e4b8af44b19;p=virtualjaguar diff --git a/src/gui/profile.cpp b/src/gui/profile.cpp index 114b98c..5f1ca13 100644 --- a/src/gui/profile.cpp +++ b/src/gui/profile.cpp @@ -30,7 +30,7 @@ // #include "profile.h" -#include +#include #include "gamepad.h" #include "log.h" #include "settings.h" @@ -49,6 +49,7 @@ int gamepadIDSlot2; int numberOfProfiles; int numberOfDevices; char deviceNames[MAX_DEVICES][128]; +static int numberOfProfilesSave; // This is so that new devices have something reasonable to show for default uint32_t defaultMap[21] = { @@ -68,6 +69,7 @@ int FindProfileForDevice(int deviceNum, int preferred, int * found); // void SaveProfiles(void) { + numberOfProfilesSave = numberOfProfiles; memcpy(&profileBackup, &profile, sizeof(Profile) * MAX_PROFILES); } @@ -75,6 +77,7 @@ void SaveProfiles(void) void RestoreProfiles(void) { memcpy(&profile, &profileBackup, sizeof(Profile) * MAX_PROFILES); + numberOfProfiles = numberOfProfilesSave; } @@ -94,7 +97,7 @@ void ReadProfiles(QSettings * set) for(int i=1; isetArrayIndex(i - 1); - strcpy(deviceNames[i], set->value("deviceName").toString().toAscii().data()); + strcpy(deviceNames[i], set->value("deviceName").toString().toUtf8().data()); #ifdef DEBUG_PROFILES printf("Read device name: %s\n", deviceNames[i]); #endif @@ -110,7 +113,7 @@ printf("Number of profiles: %u\n", numberOfProfiles); { set->setArrayIndex(i); profile[i].device = set->value("deviceNum").toInt(); - strcpy(profile[i].mapName, set->value("mapName").toString().toAscii().data()); + strcpy(profile[i].mapName, set->value("mapName").toString().toUtf8().data()); profile[i].preferredSlot = set->value("preferredSlot").toInt(); for(int j=0; j<21; j++) @@ -357,15 +360,25 @@ One more stab at this... */ void AutoConnectProfiles(void) { - int foundProfiles[MAX_PROFILES]; +// int foundProfiles[MAX_PROFILES]; controller1Profile = -1; controller2Profile = -1; gamepadIDSlot1 = -1; gamepadIDSlot2 = -1; - // Connect keyboard devices first... (N.B.: this leaves gampadIDSlot1 at -1, - // so it can be overridden by plugged-in gamepads.) - ConnectProfileToDevice(0); + // Connect the keyboard automagically only if no gamepads are plugged in. + // Otherwise, check after all other devices have been checked, then try to + // add it in. + if (Gamepad::numJoysticks == 0) + { +#ifdef DEBUG_PROFILES +printf("AutoConnect: Setting up keyboard...\n"); +#endif +//NO! ConnectProfileToDevice(0); +#warning "!!! Need to set up scanning for multiple keyboard profiles !!!" + ConnectProfileToController(0, 0); + return; + } // Connect the profiles that prefer a slot, if any. // N.B.: Conflicts are detected, but ignored. 1st controller to grab a @@ -374,6 +387,9 @@ void AutoConnectProfiles(void) { int deviceNum = FindDeviceNumberForName(Gamepad::GetJoystickName(i)); // bool p1Overwriteable = +#ifdef DEBUG_PROFILES +printf("AutoConnect: Attempting to set up profile for device '%s' (%i)\n", Gamepad::GetJoystickName(i), deviceNum); +#endif for(int j=0; j