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;
|
||||
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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue