From 77fd471915c4bfff93f872c6b7120301bc2ed827 Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Tue, 14 Jan 2025 12:34:32 -0600 Subject: [PATCH] Only load segments from profile if segment count differs from base controller, prevents segment duplication on devices with autogenerated segments --- ProfileManager.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/ProfileManager.cpp b/ProfileManager.cpp index 6101277f..7a7d5a77 100644 --- a/ProfileManager.cpp +++ b/ProfileManager.cpp @@ -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_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); } - 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]); + } } } }