Only load segments from profile if segment count differs from base controller, prevents segment duplication on devices with autogenerated segments

This commit is contained in:
Adam Honse 2025-01-14 12:34:32 -06:00
parent 67a0f031a7
commit 77fd471915

View file

@ -291,14 +291,19 @@ bool ProfileManager::LoadDeviceFromListWithOptions
&&(temp_controller->zones[zone_idx].leds_min == load_controller->zones[zone_idx].leds_min ) &&(temp_controller->zones[zone_idx].leds_min == load_controller->zones[zone_idx].leds_min )
&&(temp_controller->zones[zone_idx].leds_max == load_controller->zones[zone_idx].leds_max )) &&(temp_controller->zones[zone_idx].leds_max == load_controller->zones[zone_idx].leds_max ))
{ {
if (temp_controller->zones[zone_idx].leds_count != load_controller->zones[zone_idx].leds_count) if(temp_controller->zones[zone_idx].leds_count != load_controller->zones[zone_idx].leds_count)
{ {
load_controller->ResizeZone((int)zone_idx, temp_controller->zones[zone_idx].leds_count); load_controller->ResizeZone((int)zone_idx, temp_controller->zones[zone_idx].leds_count);
} }
for(std::size_t segment_idx = 0; segment_idx < temp_controller->zones[zone_idx].segments.size(); segment_idx++) if(temp_controller->zones[zone_idx].segments.size() != load_controller->zones[zone_idx].segments.size())
{ {
load_controller->zones[zone_idx].segments.push_back(temp_controller->zones[zone_idx].segments[segment_idx]); load_controller->zones[zone_idx].segments.clear();
for(std::size_t segment_idx = 0; segment_idx < temp_controller->zones[zone_idx].segments.size(); segment_idx++)
{
load_controller->zones[zone_idx].segments.push_back(temp_controller->zones[zone_idx].segments[segment_idx]);
}
} }
} }
} }