diff --git a/wled00/FX.h b/wled00/FX.h index 7215e347b..9a910108d 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -648,6 +648,7 @@ class WS2812FX { calcGammaTable(float), trigger(void), setSegment(uint8_t n, uint16_t start, uint16_t stop, uint8_t grouping = 0, uint8_t spacing = 0, uint16_t offset = UINT16_MAX), + restartRuntime(), resetSegments(), makeAutoSegments(), fixInvalidSegments(), diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 20ff12b85..b1088d140 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -606,6 +606,12 @@ void WS2812FX::setSegment(uint8_t n, uint16_t i1, uint16_t i2, uint8_t grouping, _segment_runtimes[n].reset(); } +void WS2812FX::restartRuntime() { + for (uint8_t i = 0; i < MAX_NUM_SEGMENTS; i++) { + _segment_runtimes[i].reset(); + } +} + void WS2812FX::resetSegments() { for (uint8_t i = 0; i < MAX_NUM_SEGMENTS; i++) if (_segments[i].name) delete _segments[i].name; mainSegment = 0; diff --git a/wled00/wled.cpp b/wled00/wled.cpp index 6e120e4d8..55fd95956 100644 --- a/wled00/wled.cpp +++ b/wled00/wled.cpp @@ -193,6 +193,7 @@ void WLED::loop() if (lastMqttReconnectAttempt > millis()) { rolloverMillis++; lastMqttReconnectAttempt = 0; + strip.restartRuntime(); } if (millis() - lastMqttReconnectAttempt > 30000) { lastMqttReconnectAttempt = millis();