From f10ba1a7ffe9c280fd4a3654e8ea972e280a1953 Mon Sep 17 00:00:00 2001 From: reinelt Date: Wed, 22 Dec 2004 20:24:02 +0000 Subject: [lcd4linux @ 2004-12-22 20:24:00 by reinelt] T6963 fix for displays > 8 rows git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@498 3ae390bd-cb1e-0410-b409-cd5a39f66f1f --- drv_T6963.c | 60 ++++++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 44 insertions(+), 16 deletions(-) (limited to 'drv_T6963.c') diff --git a/drv_T6963.c b/drv_T6963.c index 06601be..3776d0d 100644 --- a/drv_T6963.c +++ b/drv_T6963.c @@ -1,4 +1,4 @@ -/* $Id: drv_T6963.c,v 1.12 2004/06/26 12:04:59 reinelt Exp $ +/* $Id: drv_T6963.c,v 1.13 2004/12/22 20:24:02 reinelt Exp $ * * new style driver for T6963-based displays * @@ -23,6 +23,9 @@ * * * $Log: drv_T6963.c,v $ + * Revision 1.13 2004/12/22 20:24:02 reinelt + * T6963 fix for displays > 8 rows + * * Revision 1.12 2004/06/26 12:04:59 reinelt * * uh-oh... the last CVS log message messed up things a lot... @@ -354,36 +357,61 @@ static void drv_T6_blit(const int row, const int col, const int height, const in int i, j, e, m; int r, c; - for (r=row; r 4) break; + } else { + e = 0; + } + } + memcpy (Buffer2 + j, Buffer1 + j, i - j - e + 1); + drv_T6_copy (j, Buffer1 + j, i - j - e + 1); + } - for (i=(row*DCOLS+col)/XRES; i<=m; i++) { - if (Buffer1[i]==Buffer2[i]) continue; - for (j=i, e=0; i<=m; i++) { - if (Buffer1[i]==Buffer2[i]) { - if (++e>4) break; + /* lower half */ + + /* max address */ + m = ((row + height - 1) * DCOLS + col + width) / XRES; + + for (i = (64 * DCOLS + col) / XRES; i <= m; i++) { + if (Buffer1[i] == Buffer2[i]) continue; + for (j = i, e = 0; i <= m; i++) { + if (Buffer1[i] == Buffer2[i]) { + if (++e > 4) break; } else { - e=0; + e = 0; } } - memcpy (Buffer2+j, Buffer1+j, i-j-e+1); - drv_T6_copy (j, Buffer1+j, i-j-e+1); + memcpy (Buffer2 + j, Buffer1 + j, i - j - e + 1); + drv_T6_copy (j, Buffer1 + j, i - j - e + 1); } } + static int drv_T6_start (const char *section) { char *model, *s; -- cgit v1.2.3