From 5c848859956d62098aa88fdb524faf8bf17fc386 Mon Sep 17 00:00:00 2001 From: inmarket Date: Sat, 24 Jun 2017 10:08:59 +1000 Subject: [PATCH] Improve handling of streaming drivers with a setpos and a fillarea acceleration --- drivers/gdisp/readme.txt | 2 +- src/gdisp/gdisp.c | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/gdisp/readme.txt b/drivers/gdisp/readme.txt index c34363b9..cc0fd724 100644 --- a/drivers/gdisp/readme.txt +++ b/drivers/gdisp/readme.txt @@ -18,7 +18,7 @@ Nokia6610GE12 - Small (130x130) 12bit color LCD (untested) PCD8544 - Small monochrome LCD PCF8812 - Small monochrome LCD R61505U - Mid-sized color LCD displays eg RGB565 320x240 -RA6963 - Small monochrom LCD +RA6963 - Small monochrome LCD RA8875 - Mid-sized color LCD displays eg RGB565 320x240 S6D1121 - Mid-sized color LCD displays eg RGB565 320x240 SPFD54124B - Mid-sized color LCD displays eg RGB565 320x240 diff --git a/src/gdisp/gdisp.c b/src/gdisp/gdisp.c index 5674f29b..1941bd88 100644 --- a/src/gdisp/gdisp.c +++ b/src/gdisp/gdisp.c @@ -179,6 +179,12 @@ static GFXINLINE void fillarea(GDisplay *g) { if (gvmt(g)->fill) #endif { + #if GDISP_HARDWARE_STREAM_POS && GDISP_HARDWARE_STREAM_WRITE + if ((g->flags & GDISP_FLG_SCRSTREAM)) { + gdisp_lld_write_stop(g); + g->flags &= ~GDISP_FLG_SCRSTREAM; + } + #endif gdisp_lld_fill_area(g); return; } @@ -363,6 +369,12 @@ static void vline_clip(GDisplay *g) { if (gvmt(g)->fill) #endif { + #if GDISP_HARDWARE_STREAM_POS && GDISP_HARDWARE_STREAM_WRITE + if ((g->flags & GDISP_FLG_SCRSTREAM)) { + gdisp_lld_write_stop(g); + g->flags &= ~GDISP_FLG_SCRSTREAM; + } + #endif g->p.cy = g->p.y1 - g->p.y + 1; g->p.cx = 1; gdisp_lld_fill_area(g);