From 27e0bff4eea728ceb6013c5e0eb906a1bcf53da1 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Fri, 26 Jan 2024 17:21:31 +0100 Subject: [PATCH] make "segment off" work (MM specific) - fixes #90 fix for #90 In principle its dangerous to write pixels from the webserver callback, but in this case we should be save - `suspendStripService=true` ensures that strip.service() is not active in the main loopTask. --- wled00/json.cpp | 5 ++++- wled00/wled.h | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/wled00/json.cpp b/wled00/json.cpp index 212482b0..3567c7ad 100644 --- a/wled00/json.cpp +++ b/wled00/json.cpp @@ -369,7 +369,10 @@ bool deserializeSegment(JsonObject elem, byte it, byte presetId) strip.trigger(); // force segment update } // send UDP/WS if segment options changed (except selection; will also deselect current preset) - if (seg.differs(prev) & 0x7F) stateChanged = true; + 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 + } if (iAmGroot) suspendStripService = false; // WLEDMM release lock return true; diff --git a/wled00/wled.h b/wled00/wled.h index f29839fa..8bf3985f 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2401030 +#define VERSION 2401260 // 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_