minimal Auto segment creation bugfix

based on 13bfda56ef
This commit is contained in:
Frank
2024-05-18 21:49:09 +02:00
parent 31cca47024
commit 1b9b2dcffe
2 changed files with 4 additions and 2 deletions

View File

@@ -2205,7 +2205,7 @@ void WS2812FX::makeAutoSegments(bool forceReset) {
segStops[s] = segStarts[s] + b->getLength();
#ifndef WLED_DISABLE_2D
if (isMatrix && segStops[s] < Segment::maxWidth*Segment::maxHeight) continue; // ignore buses comprising matrix
if (isMatrix && segStops[s] <= Segment::maxWidth*Segment::maxHeight) continue; // ignore buses comprising matrix
if (isMatrix && segStarts[s] < Segment::maxWidth*Segment::maxHeight) segStarts[s] = Segment::maxWidth*Segment::maxHeight;
#endif
@@ -2278,6 +2278,8 @@ void WS2812FX::fixInvalidSegments() {
if (_segments[i].stop > _length) _segments[i].stop = _length;
}
}
// if any segments were deleted free memory
purgeSegments();
// this is always called as the last step after finalizeInit(), update covered bus types
for (segment &seg : _segments)
seg.refreshLightCapabilities();

View File

@@ -516,7 +516,7 @@ bool deserializeState(JsonObject root, byte callMode, byte presetId)
//bool didSet = false;
for (size_t s = 0; s < strip.getSegmentsNum(); s++) {
Segment &sg = strip.getSegment(s);
if (sg.isSelected()) {
if (sg.isActive() && sg.isSelected()) {
inDeepCall = true; // WLEDMM remember that we are going into recursion
deserializeSegment(segVar, s, presetId);
if (iAmGroot) inDeepCall = false; // WLEDMM toplevel -> reset recursion flag