aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorinmarket <inmarket@ugfx.io>2017-06-24 10:08:59 +1000
committerinmarket <inmarket@ugfx.io>2017-06-24 10:08:59 +1000
commit5c848859956d62098aa88fdb524faf8bf17fc386 (patch)
tree871571f0ab80f0d50deea791e6fbfdfb6b180e44
parente6721f70a060be092934585d5ba31f201dd47706 (diff)
downloaduGFX-5c848859956d62098aa88fdb524faf8bf17fc386.tar.gz
uGFX-5c848859956d62098aa88fdb524faf8bf17fc386.tar.bz2
uGFX-5c848859956d62098aa88fdb524faf8bf17fc386.zip
Improve handling of streaming drivers with a setpos and a fillarea acceleration
-rw-r--r--drivers/gdisp/readme.txt2
-rw-r--r--src/gdisp/gdisp.c12
2 files changed, 13 insertions, 1 deletions
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);