suspendStripService improvements
* also suspend Transitions, Notifications and Live LED updates while strip or segments are under update from the Web UI.
This commit is contained in:
@@ -1527,7 +1527,7 @@ void WS2812FX::waitUntilIdle(void) {
|
||||
if (isServicing()) {
|
||||
unsigned long waitStarted = millis();
|
||||
do {
|
||||
delay(1); // Suspending for 1 tick or more gives other tasks a chance to run.
|
||||
delay(2); // Suspending for 1 tick (or more) gives other tasks a chance to run.
|
||||
//yield(); // seems to be a no-op on esp32
|
||||
} while (isServicing() && (millis() - waitStarted < MAX_IDLE_WAIT_MS));
|
||||
USER_PRINTF("strip.waitUntilIdle(): strip %sidle after %d ms. (task %s)\n", isServicing()?"not ":"", int(millis() - waitStarted), pcTaskGetTaskName(NULL));
|
||||
|
||||
@@ -102,8 +102,16 @@ void WLED::loop()
|
||||
#endif
|
||||
handleConnection();
|
||||
handleSerial();
|
||||
handleNotifications();
|
||||
handleTransitions();
|
||||
|
||||
#if defined(ARDUINO_ARCH_ESP32) && defined(WLEDMM_PROTECT_SERVICE) // WLEDMM experimental: handleNotifications() calls strip.show(); handleTransitions modifies segments
|
||||
if (!suspendStripService) {
|
||||
#endif
|
||||
handleNotifications();
|
||||
handleTransitions();
|
||||
#if defined(ARDUINO_ARCH_ESP32) && defined(WLEDMM_PROTECT_SERVICE) // WLEDMM end
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef WLED_ENABLE_DMX
|
||||
handleDMX();
|
||||
#endif
|
||||
@@ -255,6 +263,9 @@ void WLED::loop()
|
||||
}
|
||||
|
||||
yield();
|
||||
#if defined(ARDUINO_ARCH_ESP32) && defined(WLEDMM_PROTECT_SERVICE) // WLEDMM experimental: pause handleWs while strip/segment data might be inconsistent
|
||||
if (!suspendStripService)
|
||||
#endif
|
||||
handleWs();
|
||||
handleStatusLED();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user