]> Shamusworld >> Repos - virtualjaguar/blobdiff - src/gui/profile.cpp
Hotfix for bug #28.
[virtualjaguar] / src / gui / profile.cpp
index 854d8cb038b05408e886b6a51af9ebf66c736494..cbb12f47efc7da55c697c34649cb9c573a68e1a1 100644 (file)
@@ -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;
 }
 
 
@@ -357,7 +360,7 @@ One more stab at this...
 */
 void AutoConnectProfiles(void)
 {
-       int foundProfiles[MAX_PROFILES];
+//     int foundProfiles[MAX_PROFILES];
        controller1Profile = -1;
        controller2Profile = -1;
        gamepadIDSlot1 = -1;
@@ -443,6 +446,8 @@ void AutoConnectProfiles(void)
        }
 
        // Connect the keyboard device (lowest priority)
+       // N.B.: The keyboard is always mapped to profile #0, so we can locate it
+       //       easily. :-)
        int slot = profile[0].preferredSlot;
 
        if ((slot == CONTROLLER1) && (gamepadIDSlot1 == -1))