diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index 6d2d62368..b02ced404 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -66,6 +66,9 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) { lutftime = 350; lut3time = 10; ep_mode = 0; + fg_col = 1; + bg_col = 0; + splash_font = -1; allcmd_mode = 0; startline = 0xA1; uint8_t section = 0; @@ -527,7 +530,7 @@ Renderer *uDisplay::Init(void) { Serial.printf("delay %d ms\n", delay_ms); #endif } - + } if (index >= dsp_ncmds) break; } @@ -575,8 +578,10 @@ void uDisplay::DisplayInit(int8_t p, int8_t size, int8_t rot, int8_t font) { setTextSize(size); setTextColor(fg_col, bg_col); setCursor(0,0); - fillScreen(bg_col); - Updateframe(); + if (splash_font >= 0) { + fillScreen(bg_col); + Updateframe(); + } #ifdef UDSP_DEBUG Serial.printf("Dsp Init complete \n"); @@ -1036,11 +1041,18 @@ static inline uint8_t ulv_color_to1(uint16_t color) { return 0; } } -void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean first) { +void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean not_inverted) { uint16_t color; //Serial.printf("push %x - %d\n", (uint32_t)data, len); +#ifdef ESP32 +// reversed order for DMA, so non-DMA needs to get back to normal order + if (!not_inverted && !lvgl_param.use_dma) { + for (uint32_t i = 0; i < len; i++) (data[i] = data[i] << 8 | data[i] >> 8); + } +#endif + if (bpp != 16) { // stupid monchrome version for (uint32_t y = seta_yp1; y < seta_yp2; y++) { @@ -1064,8 +1076,6 @@ void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean first) { if (lvgl_param.use_dma) { pushPixelsDMA(data, len ); } else { - // reversed order for DMA, so non-DMA needs to get back to normal order - for (uint32_t i = 0; i < len; i++) (data[i] = data[i] << 8 | data[i] >> 8); uspi->writePixels(data, len * 2); } #endif diff --git a/lib/lib_display/UDisplay/uDisplay.h b/lib/lib_display/UDisplay/uDisplay.h index 62b9bf620..ba4a9bfd1 100755 --- a/lib/lib_display/UDisplay/uDisplay.h +++ b/lib/lib_display/UDisplay/uDisplay.h @@ -163,8 +163,8 @@ class uDisplay : public Renderer { uint8_t dsp_on; uint8_t dsp_off; uint8_t allcmd_mode; - uint16_t splash_font; - uint16_t splash_size; + int8_t splash_font; + uint8_t splash_size; uint16_t splash_xp; uint16_t splash_yp; uint16_t fg_col; diff --git a/tasmota/xdrv_54_lvgl.ino b/tasmota/xdrv_54_lvgl.ino index 98ff42bd4..4823bb0f9 100644 --- a/tasmota/xdrv_54_lvgl.ino +++ b/tasmota/xdrv_54_lvgl.ino @@ -162,7 +162,7 @@ void lv_flush_callback(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *c uint32_t pixels_len = width * height; uint32_t chrono_start = millis(); display->setAddrWindow(area->x1, area->y1, area->x1+width, area->y1+height); - display->pushColors((uint16_t *)color_p, pixels_len, true); + display->pushColors((uint16_t *)color_p, pixels_len, false); display->setAddrWindow(0,0,0,0); uint32_t chrono_time = millis() - chrono_start;