From 53ecf16ab17aefe237e975bffbef991623f7a9c2 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Thu, 7 Nov 2024 16:43:20 +0100 Subject: [PATCH] bugfix: make freeze work again the last commit had a side-effect that cause "freeze" to first blank the screen, then freeze. --- wled00/FX_fcn.cpp | 6 +++--- wled00/json.cpp | 8 ++++---- wled00/wled.h | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index e94e6e6a..8f28daf7 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -277,16 +277,16 @@ void Segment::resetIfRequired() { next_time = 0; step = 0; call = 0; aux0 = 0; aux1 = 0; reset = false; // setOption(SEG_OPTION_RESET, false); startFrame(); // WLEDMM update cached propoerties - if (isActive()) fill(BLACK); // WLEDMM start clean + if (isActive() && !freeze) fill(BLACK); // WLEDMM start clean DEBUG_PRINTLN("Segment reset"); } else if (needsBlank) { startFrame(); // WLEDMM update cached propoerties - if (isActive()) { + if (isActive() && !freeze) { fill(BLACK); // WLEDMM start clean DEBUG_PRINTLN("Segment blanked"); + needsBlank = false; } } - needsBlank = false; } void Segment::setUpLeds() { diff --git a/wled00/json.cpp b/wled00/json.cpp index 28467a17..81a78ea0 100644 --- a/wled00/json.cpp +++ b/wled00/json.cpp @@ -386,13 +386,13 @@ bool deserializeSegment(JsonObject elem, byte it, byte presetId) if (seg.differs(prev) & 0x7F) { stateChanged = true; if ((seg.on == false) && (prev.on == true) && (prev.freeze == false)) prev.fill(BLACK); // WLEDMM: force BLACK if segment was turned off - else if (prev.isActive()) prev.fill(BLACK); // WLEDMM fingers crossed - seg.markForBlank(); // WLEDMM + else if (prev.isActive() && !prev.freeze && !seg.freeze) prev.fill(BLACK); // WLEDMM fingers crossed + if (!seg.freeze) seg.markForBlank(); // WLEDMM } else if ((seg.grouping != prev.grouping) || (seg.spacing != prev.spacing) || (seg.transpose != prev.transpose)) { // WLEDMM blank if grouping / spacing changed - seg.markForBlank(); - if (prev.isActive()) prev.fill(BLACK); // WLEDMM fingers crossed + if (!seg.freeze) seg.markForBlank(); + if (prev.isActive() && !prev.freeze) prev.fill(BLACK); // WLEDMM fingers crossed } if (iAmGroot) suspendStripService = false; // WLEDMM release lock diff --git a/wled00/wled.h b/wled00/wled.h index 9ee74490..9036cde7 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2411040 +#define VERSION 2411070 // WLEDMM - you can check for this define in usermods, to only enabled WLEDMM specific code in the "right" fork. Its not defined in AC WLED. #define _MoonModules_WLED_