mirror of https://github.com/arendst/Tasmota.git
Merge pull request #11899 from gemu2015/lvgl_update
fix lvgl pushcolors
This commit is contained in:
commit
301ff373a8
|
@ -66,6 +66,9 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) {
|
||||||
lutftime = 350;
|
lutftime = 350;
|
||||||
lut3time = 10;
|
lut3time = 10;
|
||||||
ep_mode = 0;
|
ep_mode = 0;
|
||||||
|
fg_col = 1;
|
||||||
|
bg_col = 0;
|
||||||
|
splash_font = -1;
|
||||||
allcmd_mode = 0;
|
allcmd_mode = 0;
|
||||||
startline = 0xA1;
|
startline = 0xA1;
|
||||||
uint8_t section = 0;
|
uint8_t section = 0;
|
||||||
|
@ -527,7 +530,7 @@ Renderer *uDisplay::Init(void) {
|
||||||
Serial.printf("delay %d ms\n", delay_ms);
|
Serial.printf("delay %d ms\n", delay_ms);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if (index >= dsp_ncmds) break;
|
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);
|
setTextSize(size);
|
||||||
setTextColor(fg_col, bg_col);
|
setTextColor(fg_col, bg_col);
|
||||||
setCursor(0,0);
|
setCursor(0,0);
|
||||||
fillScreen(bg_col);
|
if (splash_font >= 0) {
|
||||||
Updateframe();
|
fillScreen(bg_col);
|
||||||
|
Updateframe();
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef UDSP_DEBUG
|
#ifdef UDSP_DEBUG
|
||||||
Serial.printf("Dsp Init complete \n");
|
Serial.printf("Dsp Init complete \n");
|
||||||
|
@ -1036,11 +1041,18 @@ static inline uint8_t ulv_color_to1(uint16_t color) {
|
||||||
return 0;
|
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;
|
uint16_t color;
|
||||||
|
|
||||||
//Serial.printf("push %x - %d\n", (uint32_t)data, len);
|
//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) {
|
if (bpp != 16) {
|
||||||
// stupid monchrome version
|
// stupid monchrome version
|
||||||
for (uint32_t y = seta_yp1; y < seta_yp2; y++) {
|
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) {
|
if (lvgl_param.use_dma) {
|
||||||
pushPixelsDMA(data, len );
|
pushPixelsDMA(data, len );
|
||||||
} else {
|
} 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);
|
uspi->writePixels(data, len * 2);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -163,8 +163,8 @@ class uDisplay : public Renderer {
|
||||||
uint8_t dsp_on;
|
uint8_t dsp_on;
|
||||||
uint8_t dsp_off;
|
uint8_t dsp_off;
|
||||||
uint8_t allcmd_mode;
|
uint8_t allcmd_mode;
|
||||||
uint16_t splash_font;
|
int8_t splash_font;
|
||||||
uint16_t splash_size;
|
uint8_t splash_size;
|
||||||
uint16_t splash_xp;
|
uint16_t splash_xp;
|
||||||
uint16_t splash_yp;
|
uint16_t splash_yp;
|
||||||
uint16_t fg_col;
|
uint16_t fg_col;
|
||||||
|
|
|
@ -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 pixels_len = width * height;
|
||||||
uint32_t chrono_start = millis();
|
uint32_t chrono_start = millis();
|
||||||
display->setAddrWindow(area->x1, area->y1, area->x1+width, area->y1+height);
|
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);
|
display->setAddrWindow(0,0,0,0);
|
||||||
uint32_t chrono_time = millis() - chrono_start;
|
uint32_t chrono_time = millis() - chrono_start;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue