When saving sizes/manual configuration, keep any existing controllers that are not currently available

This commit is contained in:
Adam Honse
2026-02-19 00:12:23 -06:00
parent 0e07d222db
commit 9cdf885dd4

View File

@@ -718,6 +718,8 @@ bool ProfileManager::SaveSizes()
/*-----------------------------------------------------*\
| Write controller data for each controller |
\*-----------------------------------------------------*/
std::size_t new_saved_controller_index = 0;
for(std::size_t controller_index = 0; controller_index < controllers.size(); controller_index++)
{
/*-------------------------------------------------*\
@@ -730,11 +732,47 @@ bool ProfileManager::SaveSizes()
break;
}
/*-------------------------------------------------*\
| Read the controller data for this controller into |
| the profile json |
\*-------------------------------------------------*/
profile_json["controllers"][controller_index] = controllers[controller_index]->GetDeviceDescriptionJSON();
for(std::size_t zone_index = 0; zone_index < controllers[controller_index]->GetZoneCount(); zone_index++)
{
if(controllers[controller_index]->GetZoneFlags(zone_index) & ZONE_FLAG_MANUALLY_CONFIGURED)
{
/*---------------------------------------------*\
| Read the controller data for this controller |
| into the profile json if manually configured |
\*---------------------------------------------*/
profile_json["controllers"][new_saved_controller_index] = controllers[controller_index]->GetDeviceDescriptionJSON();
new_saved_controller_index++;
}
}
}
/*-----------------------------------------------------*\
| Loop through the previously saved sizes and add any |
| controllers that were previously saved but not in the |
| current controllers list |
\*-----------------------------------------------------*/
for(std::size_t old_saved_controller_index = 0; old_saved_controller_index < manually_configured_rgb_controllers.size(); old_saved_controller_index++)
{
bool found = false;
for(std::size_t controller_index = 0; controller_index < controllers.size(); controller_index++)
{
if(ProfileManager::CompareControllers(manually_configured_rgb_controllers[old_saved_controller_index], controllers[controller_index]))
{
found = true;
break;
}
}
if(!found)
{
/*---------------------------------------------*\
| Read the controller data for this controller |
| into the profile json |
\*---------------------------------------------*/
profile_json["controllers"][new_saved_controller_index] = manually_configured_rgb_controllers[old_saved_controller_index]->GetDeviceDescriptionJSON();
new_saved_controller_index++;
}
}
controller_file << std::setw(4) << profile_json << std::endl;
@@ -745,7 +783,7 @@ bool ProfileManager::SaveSizes()
controller_file.close();
/*-----------------------------------------------------*\
| Initialize manually configured controllers list |
| Reinitialize manually configured controllers list |
\*-----------------------------------------------------*/
manually_configured_rgb_controllers = GetControllerListFromSizes();