diff --git a/platformio.ini b/platformio.ini index aa0f88a..6c662fb 100644 --- a/platformio.ini +++ b/platformio.ini @@ -101,7 +101,7 @@ build_flags = -DNO_GFX=1 -DZEDMD_WIFI=1 -DDISPLAY_LED_MATRIX=1 - -DPIXEL_COLOR_DEPTH_BITS=7 + -DPIXEL_COLOR_DEPTH_BITS=8 -DNO_FAST_FUNCTIONS=1 -DMINIZ_NO_STDIO=1 -DMINIZ_NO_TIME=1 @@ -129,7 +129,7 @@ build_flags = -DZEDMD_HD=1 -DZEDMD_WIFI=1 -DDISPLAY_LED_MATRIX=1 - -DPIXEL_COLOR_DEPTH_BITS=7 + -DPIXEL_COLOR_DEPTH_BITS=8 -DNO_FAST_FUNCTIONS=1 -DMINIZ_NO_STDIO=1 -DMINIZ_NO_TIME=1 @@ -157,7 +157,7 @@ build_flags = -DZEDMD_HD_HALF=1 -DZEDMD_WIFI=1 -DDISPLAY_LED_MATRIX=1 - -DPIXEL_COLOR_DEPTH_BITS=7 + -DPIXEL_COLOR_DEPTH_BITS=8 -DNO_FAST_FUNCTIONS=1 -DMINIZ_NO_STDIO=1 -DMINIZ_NO_TIME=1 diff --git a/src/main.cpp b/src/main.cpp index 4fece97..7aa0bfc 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -847,6 +847,9 @@ void IRAM_ATTR HandlePacket(AsyncUDPPacket packet) { uint8_t numZones = pPacket[1] & 127; uint16_t size = (int)(pPacket[3]) + (((int)pPacket[2]) << 8); + // Maybe a bug in libzedmd, but sometimes we get 0 zones. + if (0 == numZones) break; + #if !defined(BOARD_HAS_PSRAM) renderBuffer = (uint8_t *)malloc(ZONE_SIZE * numZones + numZones); if (renderBuffer == nullptr) { @@ -902,6 +905,9 @@ void IRAM_ATTR HandlePacket(AsyncUDPPacket packet) { uint8_t numZones = pPacket[1] & 127; uint16_t size = (int)(pPacket[3]) + (((int)pPacket[2]) << 8); + // Maybe a bug in libzedmd, but sometimes we get 0 zones. + if (0 == numZones) break; + #if !defined(BOARD_HAS_PSRAM) renderBuffer = (uint8_t *)malloc(RGB565_ZONE_SIZE * numZones + numZones);